{"id":281053,"date":"2016-11-16T14:35:04","date_gmt":"2016-11-16T11:35:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=281053"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=281053","title":{"rendered":"\u0414\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 binding \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 ECMAScript-2015 \u0431\u0435\u0437 Proxy"},"content":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0425\u0430\u0431\u0440\u0430. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435\u043a\u043e\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habrahabr.ru\/company\/rtl-service\/blog\/309978\/\">\u00ab\u041e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 binding \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 ECMAScript-2015 Proxy\u00bb<\/a>. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0431\u0438\u043d\u0434\u0438\u043d\u0433 \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0432 \u0432\u0438\u0434\u0435 Proxy, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0422\u0435\u0445, \u043a\u043e\u043c\u0443 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0431\u0443\u043a\u0432\u044b, \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u0431\u0443\u043a\u0432\u044b <a href=\"http:\/\/plnkr.co\/edit\/YXC6J0h7kvyWxSE5xwW8?p=preview\">DEMO binding<\/a><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u0436\u0435 \u043c\u0435\u043d\u044f \u0441\u043c\u0443\u0442\u0438\u043b\u043e \u0432 \u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438 \u043c\u043e\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043b\u043e \u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0439:<\/p>\n<ol>\n<li>\u0410\u0432\u0442\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <b>observer<\/b>`\u0430. \u0422.\u0435. \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043b\u0431\u044d\u043a\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435, \u043d\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0449\u0435. \u0421\u0430\u043c \u0442\u0435\u0440\u043c\u0438\u043d \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0434\u0440\u0443\u0433\u043e\u0439.\n<\/li>\n<li>\u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0430\u0447\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u2014<br \/>\n<blockquote><p>setTimeout(()=&gt; listener(event), 0);<\/p><\/blockquote>\n<p>\u041f\u0440\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0435 \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b (\u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a 4mc). \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0435\u0433\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e 500 \u043c\u0441. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0438 \u043f\u043e\u0442\u043e\u043c \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u044b, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c. \u0410 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b, \u0438\u043c\u0435\u043d\u043d\u043e, \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\u0418 \u0435\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u2014 \u043d\u0435\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0439 \u043e\u0431\u0449\u0435\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a DOM \u2192 JS, DOM \u2192 DOM.<\/li>\n<\/ol>\n<p>  \u041d\u0443 \u0447\u0442\u043e \u0436, \u0445\u0432\u0430\u0442\u0438\u0442 \u0443\u043c\u043d\u0438\u0447\u0430\u0442\u044c, \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u00ab\u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u043e\u00bb. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  <b>\u0414\u0430\u043d\u043e:<\/b> <\/p>\n<ul>\n<li> \u00ab\u0447\u0438\u0441\u0442\u044b\u0435\u00bb JS \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.<\/li>\n<\/ul>\n<p>  <b>\u0417\u0430\u0434\u0430\u043d\u0438\u0435:<\/b><\/p>\n<ul>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044e\u044e \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043b\u044e\u0431\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (DOM \u2013 JS, JS \u2013 DOM, JS \u2013 JS, DOM \u2013 DOM). <\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430<\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 (\u043d\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u0435\u0439) \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a.<\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. <\/li>\n<\/ul>\n<p>  <b>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/b><\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0434\u0435\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<ol>\n<li>\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0431\u0449\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0441\u0430\u043c. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043d\u0430\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438.\n<\/li>\n<li>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043d\u043e \u0431\u0435\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0432 \u0432\u0438\u0434\u0435 <b>proxy <\/b>\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0433\u0435\u0442\u0442\u0435\u0440\u043e\u0432 \u0438 \u0441\u0435\u0442\u0442\u0435\u0440\u043e\u0432 (<b>Object.defineProperty<\/b>) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u0449\u0435 \u0432 ECMAScript 5.1.\n<\/li>\n<li>\u0414\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e <b>setTimeout + Promises<\/b>.<\/li>\n<\/ol>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f:<\/p>\n<ol>\n<li>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Binder: <br \/>   <img decoding=\"async\" src=\"http:\/\/priladnykh.ru\/images\/articles\/class.jpg\" alt=\"image\"\/><br \/>   <i>\u0420\u0438\u0441. 1 \u2014 \u0441\u0445\u0435\u043c\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Binder<\/i>\n<p>  Static:<\/p>\n<ul>\n<li><b>hash <\/b> \u2014 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0445\u044d\u0448 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u0435\u0439<\/li>\n<li><b>delay <\/b>\u2013 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430 \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/li>\n<li><b>queue <\/b>\u2013 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c<\/li>\n<li><b>timeout <\/b>\u2013 getter\/setter \u0434\u043b\u044f _timeout<\/li>\n<li><b>_timeout<\/b> \u2013 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/li>\n<li><b>prototypes <\/b>\u2013 \u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u044b \u0434\u043b\u044f \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0445\u00bb \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/li>\n<li><b>createProto <\/b>\u2013 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u044b \u0434\u043b\u044f \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0445\u00bb \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/li>\n<\/ul>\n<p>   Instance:<\/p>\n<ul>\n<li><b>\u00abtransformed properties\u00bb<\/b> \u2014 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 getter\/setter<\/li>\n<li><b>_binder<\/b> \u2013 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/li>\n<li><b>emitter <\/b>\u2013 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443<\/li>\n<li><b>bindings <\/b>\u2013 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a<\/li>\n<li><b>watchers <\/b>\u2013 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u0435\u0439<\/li>\n<li><b>properties <\/b>\u2013 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u2013 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b \u0432 getter\/setter<\/li>\n<li><b>_bind \/ _unbind<\/b> \u2013 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \/ \u043e\u0442\u0432\u044f\u0437\u043a\u0438<\/li>\n<li><b>_watch \/ _unwatch<\/b> \u2013 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \/ \u043e\u043f\u0442\u0438\u0441\u043a\u0438<\/li>\n<\/ul>\n<p>   <\/li>\n<li> \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430:\n<pre><code class=\"javascript\">     constructor(obj){                  let instance;                  \/*1*\/         if (obj) {             instance = Binder.createProto(obj, this);         } else {             instance = this;         }                  \/*2*\/         Object.defineProperty(instance, '_binder', {                                               configurable: true,                                                                  value: {}         });                  \/*3*\/         Object.defineProperties(instance._binder, {                                               'properties': {                 configurable: true,                                                                      value: {}             },             'bindings':{                 configurable: true,                                                                      value: {}             },             'watchers':{                 configurable: true,                                                                      value: {}             },             'emitter':{                 configurable: true,                 writable: true,                 value: {}             }                     });                  return instance;       }  \/*1*\/ \u2014 \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0431\u044b\u043b \u0432\u044b\u0437\u0432\u0430\u043d \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. \u0415\u0441\u043b\u0438 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 `createProto` \u0441\u043c. \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \/*8*\/  \/*2*\/ \u2014 \/*3*\/ \u2014 \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043f\u043e\u043b\u0435-\u043e\u0431\u0435\u0440\u0442\u043a\u0443 `_bunder`, \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043b\u0438\u0441\u044c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041f\u043e\u043b\u0435 \u00abemitter\u00bb \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u0430 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u0412\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u043c\u0441\u044f \u043e\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438 (`writable: false`).              <\/code><\/pre>\n<p>   <\/li>\n<li>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u0430:\n<pre><code class=\"javascript\">\/* \u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b *\/     \/*4*\/    static get timeout(){         return Binder._timeout || 0;     }         \/*5*\/     static set timeout(ms){         Object.defineProperty(this, '_timeout', {             configurable: true,             value: ms          });     }          \/*6*\/     static delay(ms = Binder.timeout){         return new Promise((res, rej) =&gt; {             if(ms &gt; 0){                 setTimeout(res, ms);             } else {                 res();             }         });     }          \/*7*\/         static get queue(){         return Promise.resolve();     }    \/*4*\/-\/*5*\/\u2014 \u0413\u0435\u0442\u0442\u0435\u0440 \u0438 \u0441\u0435\u0442\u0442\u0435\u0440 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0442\u0441\u0432\u0430 `_timeout` \u0437\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0442\u0430\u0439\u043c\u0443\u0430\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0433\u0435\u0442\u0442\u0435\u0440 \u0438 \u0441\u0435\u0442\u0442\u0435\u0440 \u0442\u0443\u0442 \u043d\u0438 \u043a \u0447\u0435\u043c\u0443, \u043d\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 ES6 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.  \/*6*\/-\/*7*\/ \u043c\u0435\u0442\u043e\u0434 queue \u0437\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0438. \u041c\u0435\u0442\u043e\u0434 `delay` \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u043c\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 &quot;\u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0435\u043d&quot; \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430 \u0438\u043b\u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0431\u0443\u0434\u0435\u0442 \u0436\u0434\u0430\u0442\u044c.              <\/code><\/pre>\n<pre><code class=\"javascript\">\/* \u041c\u043e\u0434\u0438\u0446\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 *\/      \/*8*\/     static createProto(obj, instance){                  let className = obj.constructor.name;                  if(!this.prototypes){             Object.defineProperty(this, 'prototypes', {                 configurable: true,                 value: new Map()             });         }                      if(!this.prototypes.has(className)){                          let descriptor = {                  'constructor': {                     configurable: true,                                                                          value: obj.constructor                 }             };                          Object.getOwnPropertyNames(instance.__proto__).forEach(                 ( prop ) =&gt; {                     if(prop !== 'constructor'){                         descriptor[prop] = {                             configurable: true,                             value: instance[prop]                         };                     }                 }             );                          this.prototypes.set(                 className,                  Object.create(obj.__proto__, descriptor)             );         }                  obj.__proto__ = this.prototypes.get(className);                  return obj;     }      \/*8*\/\u2014 \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430. \u0412\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430, \u043b\u0438\u0431\u043e \u0431\u0435\u0440\u0435\u0442 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 - `Binder.prototypes`             <\/code><\/pre>\n<p>   <\/p>\n<pre><code class=\"javascript\">     \/* \u041c\u043e\u0434\u0438\u0446\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 *\/      \/*9*\/     static transform(obj, prop){                 let descriptor, nativeSet;         let newGet = function(){ return this._binder.properties[prop];};         let newSet = function(value){             \/*10*\/             let queues = [Binder.queue, Binder.queue];                          \/*11*\/             if(this._binder.properties[prop] === value){ return; }                                      Object.defineProperty(this._binder.properties, prop, {                 configurable: true,                 value: value             });              if(this._binder.bindings[prop]){                                  this._binder.bindings[prop].forEach(( [prop, ms], boundObj ) =&gt; {                                           \/*12*\/                     if(boundObj === this._binder.emitter) {                         this._binder.emitter = null;                         return;                     }                                          if(boundObj[prop] === value) return;                      \/*13*\/                     queues[0] = queues[0]                         .then(() =&gt; Binder.delay(ms) )                         .then(() =&gt; {                              boundObj._binder.emitter = obj;                             boundObj[prop] = value;                          });                    });                                  queues[0] = queues[0].catch(err =&gt; console.log(err) );             }              \/*14*\/             if( this._binder.watchers[prop] ){                  this._binder.watchers[prop].forEach( ( [cb, ms] ) =&gt; {                      queues[1] = queues[1]                         .then(() =&gt; Binder.delay(ms) )                         .then(() =&gt; { cb(value); });                 });             }              if( this._binder.watchers['*'] ){                  this._binder.watchers['*'].forEach( ( [cb, ms] ) =&gt; {                      queues[1] = queues[1]                         .then(() =&gt; Binder.delay(ms) )                         .then(() =&gt; { cb(value); });                 });             }                          queues[1] = queues[1].catch(err =&gt; console.log(err));                      };          \/*15*\/         if(obj.constructor.name.indexOf('HTML') === -1){                          descriptor = {                 configurable: true,                 enumerable: true,                 get: newGet,                 set: newSet             };                      } else {              \/*16*\/             if('value' in obj) {                 descriptor = Object.getOwnPropertyDescriptor(                     obj.constructor.prototype,                     'value'                 );                 obj.addEventListener('keydown', function(evob){                     if(evob.key.length === 1){                         newSet.call(this, this.value + evob.key);                     } else {                         Binder.queue.then(() =&gt; {                             newSet.call(this, this.value);                         });                     }                 });                              } else {                                  descriptor = Object.getOwnPropertyDescriptor(                     Node.prototype,                     'textContent'                 );             }                           \/*17*\/             nativeSet = descriptor.set;                          descriptor.set = function(value){                 nativeSet.call(this, value);                 newSet.call(this, value);             };         }          Object.defineProperty(obj._binder.properties, prop, {             configurable: true,             value: obj[prop]         });                  Object.defineProperty(obj, prop, descriptor);                  return obj;     }  \/*9*\/ - \u0444\u0443\u043d\u043a\u0446\u0438\u044f `transform` \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e JS \u043e\u0431\u044a\u0435\u043a\u0442, \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0442\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 `obj._binder.properties`, \u0441\u0430\u043c\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0433\u0435\u0442\u0442\u0435\u0440\/\u0441\u0435\u0442\u0442\u0435\u0440. \u0415\u0441\u043b\u0438 \u0436\u0435 \u044d\u0442\u043e DOM \u043e\u0431\u044a\u0435\u043a\u0442, \u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u043d\u0430\u0434 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0433\u0435\u0442\u0442\u0435\u0440\u043e\u043c\/\u0441\u0435\u0442\u0442\u0435\u0440\u043e\u043c. \/*10*\/ - \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u0434\u0432\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u0435\u0439. \/*11*\/ - \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0435 \u0432 \u0441\u0435\u0442\u0442\u0435\u0440 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c. \/*12*\/ - \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0432\u043e\u043b\u043d\u044b \u043a\u0440\u043e\u0441\u0441 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a - \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u044d\u043c\u0438\u0442\u0442\u0435\u0440\u0430 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430. \u041e\u0431\u044a\u0435\u043a\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u044f \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e `obj._binder.emitter` \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u0430. \u0418\u043d\u0430\u0447\u0435 \u0431\u044b\u043b \u0431\u044b \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432\u0437\u0430\u0438\u043c\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a.  \/*13*\/ - \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u043c. \/*14*\/ - \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u043c. \/*15*\/ - \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a DOM \/*16*\/ - \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0442\u0438\u043f DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f &quot;\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435&quot; \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b`input`, `textarea` \u0441\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c `value` \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441 `textContent`.  \u0423 &quot;\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445&quot; \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0433\u0435\u0442\u0442\u0435\u0440\/\u0441\u0435\u0442\u0442\u0435\u0440 `value` \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 (\u0441\u043c. `\u0440\u0438\u0441. 2`). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f `input` \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 `HTMLInputElementPrototype`. `textContent` \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0433\u0435\u0442\u0442\u0435\u0440\/\u0441\u0435\u0442\u0442\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 `Node.prototype`(\u0441\u043c. `\u0440\u0438\u0441. 3`). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0433\u0435\u0442\u0442\u0435\u0440\/\u0441\u0435\u0442\u0442\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434 `Object.getOwnPropertyDescriptor`. \u041d\u0443 \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 &quot;\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e&quot; \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \/*17*\/ - \u0414\u0435\u043b\u0430\u0435\u043c \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u043d\u0430 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u0435\u0442\u0442\u0435\u0440\u043e\u043c, \u0447\u0442\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a.  \/*\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435*\/ - \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 `newSet` \u0438 `newGet`, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432\u043e \u0432\u043d\u0435.                <\/code><\/pre>\n<p>   <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/priladnykh.ru\/images\/articles\/HTMLInputElement.jpg\" alt=\"image\" \/><\/div>\n<p>   <i>\u0420\u0438\u0441.2 \u2014 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 `value`<\/i><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/priladnykh.ru\/images\/articles\/HTMLDivElement.jpg\" alt=\"image\" \/><\/div>\n<p>   <i>\u0420\u0438\u0441.3 \u2014 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 `textContent`, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 `div`<\/i><\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0435\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u00abdiv\u00bb (<i><b>\u0440\u0438\u0441. 4<\/b><\/i>)<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/priladnykh.ru\/images\/articles\/transformation.jpg\" alt=\"image\" \/><\/div>\n<p>   <i>\u0420\u0438\u0441.4 \u2014 \u0441\u0445\u0435\u043c\u0430 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/i><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u043e \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0441\u043c. <i><b>\u0440\u0438\u0441. 5<\/b><\/i>. \u0422.\u0435. \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0436\u0434\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0432\u043d\u043e\u0432\u044c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b, \u0430 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u043c\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/priladnykh.ru\/images\/articles\/queues.jpg\" alt=\"image\" \/><\/div>\n<p>   <i>\u0420\u0438\u0441.5 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438.<\/i><\/p>\n<\/li>\n<li>\u041c\u0435\u0442\u043e\u0434\u044b \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 <b>Binder<\/b>:\n<pre><code class=\"javascript\">     \/*18*\/      _bind(ownProp, obj, objProp, ms){                                                                                         if(!this._binder.bindings[ownProp]) {             this._binder.bindings[ownProp] = new Map();             Binder.transform(this, ownProp);              }          if(this._binder.bindings[ownProp].has(obj)){                                                        return !!console.log('Binding for this object is already set');                      }                  this._binder.bindings[ownProp].set(obj, [objProp, ms]);                                                                 if( !obj._binder.bindings[objProp] ||             !obj._binder.bindings[objProp].has(this)) {                 obj._bind(objProp, this, ownProp, ms);                                               }                         return this;                                                                                  }         \/*19*\/     _unbind(ownProp, obj, objProp){                                                              try{             this._binder.bindings[ownProp].delete(obj);                                              obj._binder.bindings[objProp].delete(this);             return this;         } catch(e) {             return !!console.log(e);         }         };         \/*20*\/     _watch(prop = '*', cb, ms){                  var cbHash = Binder.hash(cb.toString().replace(\/\\s\/g,''));                                  if(!this._binder.watchers[prop]) {                                                                  this._binder.watchers[prop] = new Map();              if(prop === '*'){                 Object.keys(this).forEach( item =&gt; {                                                          Binder.transform(this, item);                 });             } else {                 Binder.transform(this, prop);             }         }          if(this._binder.watchers[prop].has(cbHash)) {                                                     return !!console.log('Watchers is already set');         }          this._binder.watchers[prop].set(cbHash, [cb, ms]);                                                    return cbHash;                                                                     };           \/*21*\/     _unwatch(prop = '*', cbHash = 0){         try{             this._binder.watchers[prop].delete(cbHash);             return this;         } catch(e){             return !!console.log(e);         }     };   \/*18*\/ - \/*19*\/ - \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438\/\u043e\u0442\u0432\u044f\u0437\u043a\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043c\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 (\u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439) \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438. \u0421\u043c. `\u0440\u0438\u0441. 6`  \/*20*\/ - \/*21*\/ - \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438\/\u043e\u0442\u043f\u0438\u0441\u043a\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u043c\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0441\u0435 - &quot;*&quot;). \u0424\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u044d\u0448 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.  <\/code><\/pre>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/priladnykh.ru\/images\/articles\/binding.jpg\" alt=\"image\" \/><\/div>\n<p>  <i>\u0420\u0438\u0441.6 \u0417\u043d\u0430\u043a\u043e\u043c\u0442\u0435\u0441\u044c, \u043a\u043e\u0442 \u0411\u0438\u043d\u0434\u0435\u0440<\/i>  <\/li>\n<\/ol>\n<p>  <b>\u0418\u0442\u043e\u0433\u0438 :<\/b><\/p>\n<h5>\u0425\u043e\u0440\u043e\u0448\u043e:<\/h5>\n<p>  <\/p>\n<ol>\n<li>\u0417\u0430\u0449\u0438\u0442\u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438;<\/li>\n<li>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430;<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a;<\/li>\n<li>\u0414\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u0439\u00bb \u0431\u0438\u043d\u0434\u0438\u043d\u0433, \u0442.\u0435. \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/li>\n<\/ol>\n<p>  <\/p>\n<h5>\u041f\u043b\u043e\u0445\u043e :<\/h5>\n<p>  <\/p>\n<ol>\n<li>\u0414\u043b\u044f DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0441\u0432\u043e\u0439\u0442\u0441\u0432\u0430\u043c <b>&#8216;value&#8217;<\/b> \u0438 <b>&#8216;textContent&#8217;<\/b>;<\/li>\n<li>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438;<\/li>\n<\/ol>\n<p>  <b>P.S.<\/b> \u042d\u0442\u043e \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u043a\u0440\u0438\u0442\u0438\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f.<br \/>  \u0412\u0441\u0451! \u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043a\u043e\u043d\u0435\u0446 \ud83d\ude42<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/315410\/\"> https:\/\/habrahabr.ru\/post\/315410\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0425\u0430\u0431\u0440\u0430. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435\u043a\u043e\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habrahabr.ru\/company\/rtl-service\/blog\/309978\/\">\u00ab\u041e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 binding \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 ECMAScript-2015 Proxy\u00bb<\/a>. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0431\u0438\u043d\u0434\u0438\u043d\u0433 \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0432 \u0432\u0438\u0434\u0435 Proxy, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-281053","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=281053"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281053\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=281053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=281053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=281053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}