{"id":239149,"date":"2014-10-08T05:43:03","date_gmt":"2014-10-08T01:43:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=239149"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=239149","title":{"rendered":"<span class=\"post_title\">Sqimitive.js \u2014 Frontend Primitive \u0438\u043b\u0438 \u00abBackbone \u0431\u0435\u0437 \u0444\u0430\u043d\u0442\u0438\u043a\u043e\u0432\u00bb<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/d89\/eed\/127\/d89eed12756145b992a3d3c016abd61e.png\" align=\"left\"\/>\u0423\u0436\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/205692\/\">\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e<\/a> \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0430\u0439\u0442\u043e\u0432 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0431\u043e\u0440\u043e\u043c HTML\/PHP\/CSS\/JS-\u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. <em>Bower, Grunt, Component.js, AMD, Require.js, CoffeeScript, Clojure, Composer, npm, LESS<\/em> \u0438 \u0435\u0449\u0451 100500 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0441\u0436\u0430\u0442\u0438\u044f \u043a\u043e\u0434\u0430, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e JavaScript \u0432 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u043e\u0434\u0442\u0430\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0440\u0442, \u043f\u0440\u043e\u043f\u043e\u043b\u043a\u0438 \u043e\u0433\u043e\u0440\u043e\u0434\u0430 \u0438 \u0434\u0430\u0436\u0435 <a href=\"http:\/\/www.thinkgeek.com\/stuff\/looflirpa\/igrill.shtml\">\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u044f\u0438\u0447\u043d\u0438\u0446\u044b<\/a>.<\/p>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 \u044d\u0442\u043e \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u044f\u0435\u0442. \u0414\u0430 \u0447\u0442\u043e \u0442\u0430\u043c \u2014 95% \u043c\u043e\u0438\u0445 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0432 \u043e\u0434\u0438\u043d \u0433\u043e\u043b\u043e\u0441 \u0442\u0432\u0435\u0440\u0434\u044f\u0442, \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u0443-\u0442\u0440\u043e\u0439\u043a\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0441 \u043e\u0441\u043e\u0431\u043e\u0439, \u0443\u043b\u0438\u0447\u043d\u043e\u0439 \u043c\u0430\u0433\u0438\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u0430\u0431\u0430\u0445\u0430\u0442\u044c \u0441\u0430\u0439\u0442 \u043d\u0430 over-9000 \u0437\u0435\u043b\u0451\u043d\u044b\u0445 \u0430\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0439\u0441\u043a\u0438\u0445 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u2014 \u0438 \u0432\u0441\u0435\u0433\u043e \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u0435\u0447\u0435\u0440, \u0441 \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u043e\u043c \u043d\u0430 \u043a\u043e\u0444\u0435 \u0438 \u0431\u0443\u0431\u043b\u0438\u043a\u0438.<\/p>\n<p>  \u0410 \u044f \u2014 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u0441\u043c\u0435\u0448\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. <em>Angular, Knockout, React<\/em> \u2014 \u043e\u043d\u0438 \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u0438, \u043d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u2014 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u043b\u043e\u0436\u043d\u0430. \u0410 \u0432\u0435\u0434\u044c \u0435\u0441\u0442\u044c \u0438 \u00ab\u0433\u0438\u0431\u0440\u0438\u0434\u044b\u00bb, \u0433\u0434\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u0440\u043e\u0432 \u2014 \u043a\u0430\u043a <em>Ember<\/em> \u0438 <em>Knockout.Bootstrap<\/em>. \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 <em>jQuery<\/em> \u2014 \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u043a \u043d\u0435\u0439 \u0434\u0430\u0436\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439 \u043d\u0435\u0442; \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0442\u0430\u043a\u0438\u043c \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b\u0442\u044c JavaScript.<\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e, \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437\u0437\u0430\u0441\u0442\u0435\u043d\u0447\u0438\u0432\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0441 \u043c\u0435\u0447\u0442\u0430\u043c\u0438 \u0438 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u0434 \u00abi\u00bb. \u041c\u043d\u0435 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u00abnew &#038; popular\u00bb \u2014 \u0430 \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0448\u0435\u0448\u044c, \u0434\u0443\u0448\u0430 \u0442\u043e\u043c\u0438\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u2026 \u0430 \u0435\u0439 \u0440\u0430\u0437\u0432\u0435 \u043e\u0442\u043a\u0430\u0436\u0435\u0448\u044c? \u041e\u043d\u0430 \u0432\u0435\u0434\u044c \u043a\u0430\u043a \u0434\u0438\u0442\u044f \u043c\u0430\u043b\u043e\u0435.<\/p>\n<p>  \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d. \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0431\u0435\u0437 \u0444\u0430\u043d\u0442\u0438\u043a\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u041a\u0430\u043b\u0430\u0448\u043d\u0438\u043a\u043e\u0432\u0430, \u0438 \u043c\u043d\u043e\u0433\u043e\u0433\u0440\u0430\u043d\u043d\u044b\u0439, \u043a\u0430\u043a \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436, \u0433\u0434\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u2014 \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441, \u0441 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u043e\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043f\u043e\u0447\u0442\u0438 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0438\u0439 <em>Backbone.js<\/em>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 <em>Underscore.js<\/em> \u0438, \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, <em>jQuery\/Zepto<\/em>.<\/p>\n<p>  \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 Sqimitive.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u041a\u0430\u043a \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c<\/h2>\n<p>  \u042f \u2014 \u0444\u0440\u0438\u043b\u0430\u043d\u0441\u0435\u0440. \u00ab\u0424\u0440\u0438\u00bb \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e \u0434\u043e\u043b\u0433\u0443 \u0441\u043b\u0443\u0436\u0431\u044b \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043d\u0430\u0434 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438 \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043e\u043b\u0433\u0443. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0441 Backbone. \u0412 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0441\u044f \u0432\u0430\u0433\u043e\u043d \u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0442\u0435\u043b\u0435\u0436\u043a\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0442\u043e\u0439, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u043d\u0438 \u0432\u044b\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u043d\u0435\u0447\u0442\u043e \u043d\u043e\u0432\u043e\u0435. \u0422\u043e, \u0447\u0442\u043e \u044f \u043d\u0430\u0437\u0432\u0430\u043b <em>\u00abSqimitive\u00bb<\/em>.<\/p>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c 2014 \u0433\u043e\u0434 \u043c\u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043d\u044c\u044e-\u0439\u043e\u0440\u043a\u0441\u043a\u043e\u0439 \u0444\u0438\u0440\u043c\u0435 \u00abBelstone Capital\u00bb. \u042d\u0442\u043e \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0418\u0434\u0435\u0430\u043b \u0434\u0443\u0448\u0438 \u0444\u0440\u0438\u043b\u0430\u043d\u0441\u0435\u0440\u0430 (\u0445\u043e\u0442\u044f \u044d\u0442\u0430 \u0436\u0435 \u0434\u0443\u0448\u0430 \u043d\u0435 \u0434\u0430\u0451\u0442 \u043f\u043e\u0434\u043e\u043b\u0433\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u043e\u043c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c, \u043c\u0435\u0441\u0442\u0435). Sqimitive \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c.<\/p>\n<p>  \u0421\u0435\u0440\u0434\u0435\u0447\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c \u0438\u0437 <em>Belstone<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043c\u043e\u044e \u043f\u0440\u043e\u0441\u044c\u0431\u0443 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438: \u00abGo ahead\u00bb.<\/p>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 Sqimitive \u043e\u043a\u043e\u043b\u043e 9 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043e\u0442 \u0440\u043e\u0434\u0443. \u041e\u043d\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0432\u0443\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u0441\u0443\u043c\u043c\u0435 \u043d\u0430 15-20 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a (\u044d\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0435\u0451 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432 700 \u0441\u0442\u0440\u043e\u043a \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432). API \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043c\u0435\u0441\u044f\u0446\u044b \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0441\u044f, \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0430\u0432\u043d\u043e. \u041a\u043e\u0434 \u0433\u043e\u0442\u043e\u0432 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 <a href=\"https:\/\/github.com\/ProgerXP\/Sqimitive\">GitHub<\/a>, \u043f\u043e\u043b\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0430 55 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u2014 \u043d\u0430 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/\">squizzle.me<\/a> \u0438 \u0442\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/demo\">To-Do App<\/a>.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 90% \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0441 \u0443\u0439\u043c\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u043b\u0438\u0440\u0438\u043a\u0438. \u0410 \u043d\u0430\u0447\u043d\u0451\u043c \u043c\u044b \u0441 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u043c JavaScript \u0438 Backbone. \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 Backbone \u2014 Sqimitive \u0432\u0430\u043c \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c, \u0442\u0451\u043f\u043b\u044b\u043c \u0438 \u043f\u043e\u0447\u0442\u0438 \u043b\u0430\u043c\u043f\u043e\u0432\u044b\u043c.<\/p>\n<p>  (\u0417\u0434\u0435\u0441\u044c \u0438 \u0434\u0430\u043b\u0435\u0435 \u2014 \u043c\u043e\u044f \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0437\u0440\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0432\u0430\u0448\u0435\u0439, \u0425\u0430\u0431\u0440\u0430, \u043f\u0440\u0435\u0437\u0438\u0434\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u041a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u0430\u043b\u0438\u0446\u0438\u0438. \u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e \u0441\u0432\u043e\u0435\u0439 \u043a\u0430\u0440\u043c\u0435!)<\/p>\n<p>  <b>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435:<\/b><\/p>\n<ol>\n<li><a href=\"#inheritance\">\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u0444\u0430\u043a\u0442\u043e\u0440 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"#meth2ev\">\u041f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/a><\/li>\n<li><a href=\"#proto20\">\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043b\u0435\u0442\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435-2.0<\/a><\/li>\n<li><a href=\"#autooff\">\u041e \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u044f\u0445 \u0441 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e<\/a><\/li>\n<li><a href=\"#nesting\">\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u2014 \u043d\u0430\u0448\u0435 \u0432\u0441\u0451<\/a><\/li>\n<li><a href=\"#underscore\">UnderGoodness<\/a><\/li>\n<li><a href=\"#opt\">\u0427\u0442\u043e \u0432 \u043e\u043f\u0446\u0438\u044f\u0445 \u0442\u0435\u0431\u0435 \u043c\u043e\u0451\u043c?<\/a><\/li>\n<li><a href=\"#owning\">\u041d\u0435\u0440\u0430\u0434\u0438\u0432\u044b\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0438: \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0438 \u0441\u043f\u0438\u0441\u043a\u0438<\/a><\/li>\n<li><a href=\"#view\">\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0438\u0434\u044b<\/a><\/li>\n<li><a href=\"#assign\">\u041e \u0431\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0436\u0438\u0437\u043d\u0438 \u0431\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li>\n<li><a href=\"#assignresp\">assignResp \u0438 _respToOpt \u2014 \u043a\u0430\u0440\u0442\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 API<\/a><\/li>\n<li><a href=\"#other\">\u0418 \u044d\u0442\u043e \u0447\u0442\u043e, \u0432\u0441\u0451?<\/a> _shareProps, _mergeProps, masker()<\/li>\n<\/ol>\n<p>  <a name=\"inheritance\"><\/a>  <\/p>\n<h2>\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u0444\u0430\u043a\u0442\u043e\u0440 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u044f<\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0431\u044b JavaScript \u0431\u044b\u043b Haskel, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (<s>\u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u043c \u0431\u044b \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u0438\u0441\u0430\u043b<\/s>). \u0415\u0441\u043b\u0438 \u0431\u044b JavaScript \u0431\u044b\u043b \u0421\u0438, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0431\u044b\u043b\u0438 \u0431\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u2014 \u043c\u043e\u0436\u0435\u0442, \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0442\u0430\u043a\u0438\u0445.<\/p>\n<p>  \u041d\u043e JavaScript \u2014 \u044d\u0442\u043e \u0438 \u043d\u0435 Haskel, \u0438 \u043d\u0435 \u0421\u0438. \u0423 \u043d\u0435\u0433\u043e \u0431\u044b\u043b\u043e \u0442\u044f\u0436\u0451\u043b\u043e\u0435 \u0434\u0435\u0442\u0441\u0442\u0432\u043e \u0441 \u043d\u0435\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0432\u0440\u0435\u0434\u0438\u043b\u0438 \u0435\u0433\u043e <s>\u044d\u0442\u043e<\/s> <b>this<\/b>. \u0422\u0430\u043a \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u043d\u0435\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0441\u0445\u043b\u0451\u0431\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 JavaScript \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0440\u043e\u0434\u0435 \u0447\u0438\u0441\u0435\u043b \u0438 \u0441\u0442\u0440\u043e\u043a (\u0442.\u043d. <a href=\"http:\/\/en.wikipedia.org\/wiki\/First-class_citizen\">first class citizen<\/a>). \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432 \u0441\u0442\u0440\u043e\u043a\u0443. \u041f\u043b\u044e\u0441 \u043a \u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u044f\u0432\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 <b>this<\/b> \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u044f\u0437\u044b\u043a\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u0432\u0430\u043b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u0430 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 JavaScript \u043a\u0430\u043a \u0431\u044b \u0435\u0441\u0442\u044c, \u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u2014 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u2014 \u044d\u0442\u043e \u0442\u0435 \u0436\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. <s>\u0412\u0438\u0434\u0438\u043c\u043e, \u0432 \u044d\u0442\u043e\u043c \u0441\u0443\u0442\u044c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 Java (\u041e\u041e\u041f) + Script (\u0424\u041f)<\/s>. \u0428\u0443\u0442\u043a\u0430.<\/p>\n<p>  (\u041f\u0440\u043e\u0448\u0443 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u043e\u0439 \u0441\u0430\u0440\u043a\u0430\u0437\u043c \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u0441\u0435\u0440\u0434\u0446\u0443 \u043b\u044e\u0434\u044f\u043c \u0441 \u043f\u043b\u043e\u0445\u0438\u043c \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u043c \u044e\u043c\u043e\u0440\u0430. \u042f \u043b\u044e\u0431\u043b\u044e \u0438 JavaScript, \u0438 Haskel, \u043d\u043e \u044f \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043e\u0441\u0432\u0435\u0434\u043e\u043c\u043b\u0451\u043d \u043e\u0431 \u0438\u0445\u2026 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0438 \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0438\u0445 \u0447\u0451\u0442\u043a\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0438\u043c \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0410 \u0432\u043e\u043e\u0431\u0449\u0435, \u043f\u043e\u0440\u0430 \u0431\u044b \u0443\u0436\u0435 Ruby \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043c\u0438\u0440.)<\/p>\n<p>  \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 (<a href=\"http:\/\/jsfiddle.net\/Proger\/7oqgf1va\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">function Obj() {   this.property = 'Hello!'    this.show = function () {     alert(this.property)   } }  var obj = new Obj setTimeout(obj.show, 100)   \/\/ alert('undefined') <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435-\u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 <code>show<\/code> \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>Obj<\/code>, \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0435\u0451 \u0432 <code>setTimeout<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0435\u0451 \u0432\u044b\u0437\u0432\u0430\u043b\u0430 \u2014 \u0432 \u043e\u0442\u0440\u044b\u0432\u0435 \u043e\u0442 <code>Obj<\/code>, \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 <code>window<\/code>. \u0417\u0434\u0435\u0441\u044c <code>obj<\/code> \u0434\u043b\u044f \u043d\u0430\u0441 \u2014 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u0431\u0435\u0437\u043b\u0438\u043a\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432.<\/p>\n<p>  \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043d\u0435\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c <b>this<\/b> \u0445\u0443\u0434\u043e-\u0431\u0435\u0434\u043d\u043e, \u043d\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u2014 \u0438 \u0434\u0430\u0436\u0435 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0438 \u0438\u0437 ECMAScript \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u0441\u0434\u0430\u043b\u0438\u0441\u044c \u0438 \u0441\u043f\u0443\u0441\u0442\u044f \u043a\u0430\u043a\u0438\u0445-\u0442\u043e 16 \u043b\u0435\u0442 (\u0432 2011 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <a href=\"http:\/\/www.ecma-international.org\/ecma-262\/5.1\/#sec-15.3.4.5\">5.1<\/a>) \u043a <code>Function<\/code> \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d <code>bind()<\/code>, \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0449\u0438\u0439 <b>this<\/b> \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>  \u0414\u0440\u0443\u0433\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c JavaScript \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432 \u044f\u0437\u044b\u043a\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u00ab\u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u00bb. JavaScript \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043e\u0431\u0449\u0435\u043c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u043a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u043e\u043d\u0430 \u0436\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043a\u0430\u043a <b>new Func<\/b>) \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u00ab\u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u00bb. \u041f\u0440\u0438 <b>new Func<\/b> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u0432 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u00ab\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb \u0432 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u0445 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u041e\u041e\u041f \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0435\u0433\u043e \u043f\u043e\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442: \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a\u0430\u043a \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0417\u0430\u0442\u0435\u043c \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 \u0434\u0435\u043b\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u00ab\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb (\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f \u0438 \u0442.\u043f.).<\/p>\n<p>  \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0436\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430-\u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430.<\/p>\n<p>  \u042d\u0442\u0430 \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u041e\u041e\u041f \u2014 \u0445\u0440\u0443\u043f\u043a\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c, \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f\u0445 \u043f\u0440\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043d\u044e\u0430\u043d\u0441\u0430\u043c\u0438. \u0412\u0430\u0436\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432 JavaScript \u0440\u0435\u0448\u0430\u043b\u0438, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438, \u043d\u043e \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0439 <b>this<\/b>, \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0451 \u0438\u043c\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439) \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0448\u0442\u0430\u0442\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430\u043c\u0438 \u0432 \u0441\u0443\u043c\u043c\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043a\u0440\u043e\u0432\u044c \u0438 \u044f\u0440\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u0412 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u041e\u041e\u041f \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438), \u043d\u043e \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u044f\u0437\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c-\u043f\u043e\u0442\u043e\u043c\u043e\u043a. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u041e\u041e\u041f \u0432 JavaScript (<a href=\"http:\/\/jsfiddle.net\/Proger\/xvu95gg9\/1\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">function Base() {   \/\/ \u041f\u0443\u0441\u0442\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440. }  Base.prototype.property = 'Hello!'  Base.prototype.show = function () {   alert(this.property) }  function Child() {   \/\/ \u041f\u0443\u0441\u0442\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440. }  \/\/ \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e &quot;\u043a\u043b\u0430\u0441\u0441\u0430&quot;. for (var prop in Base.prototype) {   Child.prototype[prop] = Base.prototype[prop] }  \/\/ \u0422\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u044f\u0432\u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445 (\u0441\u043c. \u043d\u0438\u0436\u0435). Child.__super__ = Base.prototype  Child.prototype.show = function () {   \/\/ \u0412\u044b\u0437\u0432\u0430\u0442\u044c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434?   Child.__super__.show.call(this) } <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0437\u0434\u0435\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>show<\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430 \u043a <b>Child<\/b>, \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043d\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438 (\u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438, \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437, \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430\u043c), \u043d\u0438 \u0438\u043c\u0435\u043d\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043d\u0438 \u0434\u0430\u0436\u0435 <b>this<\/b>, \u0435\u0441\u043b\u0438 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <code>setTimeout((new Child).show, 100)<\/code>.<\/p>\n<p>  \u041d\u0430\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0448\u0438\u0442\u044c (hardcode) \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u2014 \u043f\u043b\u043e\u0445\u043e\u0439 \u043f\u0443\u0442\u044c:<\/p>\n<ul>\n<li>\u041c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u2014 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e<\/li>\n<li>\u041c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/li>\n<li>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u2014 \u043d\u0443\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043c\u044f (\u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442\u0441\u044f)<\/li>\n<li>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 \u2014 \u043d\u0443, \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438<\/li>\n<\/ul>\n<p>  \u042d\u0442\u043e \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c <code>Foo.__super__.bar.apply(this, arguments)<\/code> \u2014 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043d\u0435\u044d\u0441\u0442\u0435\u0442\u0438\u0447\u043d\u043e. \u0410 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0437\u0430\u0431\u044b\u0442\u044b\u0445 \u043d\u0435\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0441 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0451\u0440\u043d\u043e\u0439 \u043c\u0430\u0433\u0438\u0438\u2026<\/p>\n<p>  \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Backbone (\u0432 Angular, Knockout, React \u0432\u044b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 \u00ab\u043f\u043e\u043b\u0443-\u041e\u041e\u041f\u00bb, \u0433\u0434\u0435 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043a\u043e\u0432 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435, \u0447\u0442\u043e \u043d\u0435 \u043c\u043d\u043e\u0433\u0438\u043c \u043b\u0443\u0447\u0448\u0435). \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0443 Ember, \u0441 \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c <b>this._super<\/b>:<\/p>\n<pre><code class=\"javascript\">Child.reopen({   show: function (msg) {     this._super(msg + '123')   }, }) <\/code><\/pre>\n<p>  \u041d\u043e Ember \u2014 \u044d\u0442\u043e 48 000 \u0441\u0442\u0440\u043e\u043a \u0447\u0438\u0441\u0442\u043e\u0433\u043e JavaScript. \u041d\u0435\u0443\u0436\u0435\u043b\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0449\u0435?..<\/p>\n<p>  <b>\u041c\u043e\u0436\u043d\u043e. Sqimitive \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0442\u0430\u043a (<a href=\"http:\/\/jsfiddle.net\/Proger\/05rafukt\/3\/\">JSFiddle<\/a>):<\/b><\/p>\n<pre><code class=\"javascript\">var Base = Sqimitive.Sqimitive.extend({   property: 'Hello',    show: function (right) {     alert(this.property + right)   }, })  var Child = Base.extend({   property: 'Bye',    events: {     '=show': function (sup, right) {       sup(this, [' World' + right])     },   }, })  ;(new Base).show('123')   \/\/ alert('Hello123')  ;(new Child).show('123')   \/\/ alert('Bye World123') <\/code><\/pre>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 <b>__super__<\/b> \u2014 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c \u0441\u0435\u0431\u0435 \u043f\u043e \u043d\u043e\u0433\u0430\u043c \u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 legacy-\u043a\u043e\u0434\u0430 (<a href=\"http:\/\/jsfiddle.net\/Proger\/8qnck28z\/3\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var Base = Sqimitive.Sqimitive.extend({   \/\/ \u041a\u0430\u043a \u0432\u044b\u0448\u0435. })  var Child = Base.extend({   property: 'Bye',    show: function (right) {     Child.__super__.show.call(this, ' World' + right)   }, }) <\/code><\/pre>\n<p>  <a name=\"meth2ev\"><\/a>  <\/p>\n<h2>\u041f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/h2>\n<p>  \u0411\u043b\u043e\u043a <b>events<\/b> \u0432 Sqimitive \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u041a\u043e\u0433\u0434\u0430 \u0438\u043c\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 (\u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u2014 <b>show<\/b>) \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 <b>firer(&#8216;show&#8217;)<\/b> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435. \u0417\u0430\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439) \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u2014 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041d\u0435\u0442 \u043d\u0443\u0436\u0434\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u2014 \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u0441\u044f \u043d\u0435 \u043c\u0435\u0442\u043e\u0434, \u0442\u043e \u044d\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0432\u043d\u043e, \u0447\u0435\u0440\u0435\u0437 <b>fire()<\/b>.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043b\u044e\u0431\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0430 \u0441\u0430\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u0442\u044c \u043a\u0430\u043a \u044f\u0432\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <b>fire(&#8216;event&#8217;)<\/b>, \u0442\u0430\u043a \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u043c\u0435\u0442\u043e\u0434 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u2014 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u0442\u043e \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <b>firer()<\/b>, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f). \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0438 \u043d\u0430 \u043b\u0435\u0442\u0443.<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0443\u0440\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043e\u0440\u044e\u0442\u0441\u044f \u0437\u0430 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u2014 \u0432\u0441\u0451 \u0447\u0438\u0441\u0442\u043e. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0432\u0430\u0436\u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u0435\u0433\u043e \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0431\u0435\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u0441\u043c. \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0448\u0435 \u0441 <b>__super__<\/b>) \u2014 \u0442\u043e\u0433\u0434\u0430 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043c\u0438\u043d\u0443\u044f <b>fire()<\/b>. \u041f\u0440\u0438\u0447\u0451\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435, \u0438 \u0432 \u043f\u043e\u0442\u043e\u043c\u043a\u0430\u0445, \u0438 \u0443\u0436\u0435 \u0438\u043c\u0435\u044f \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b-\u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u041d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u0438\u043d\u0430\u0447\u0435 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u043e\u0442\u0435\u043a\u0443\u0442 \u043d\u0435 \u0432 \u0442\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443.<\/p>\n<p>  \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043c\u043e\u0439 \u043e\u043f\u044b\u0442, \u043f\u043e\u043b\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435 \u2014 \u0448\u0442\u0443\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u0430\u044f. \u0412 Sqimitive \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0442\u0440\u0438 \u0442\u0438\u043f\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c (\u0437\u043d\u0430\u043a \u0440\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u0435 \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445):<\/p>\n<ul>\n<li><b>\u0411\u0435\u0437 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430<\/b> \u2014 \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0442\u0438\u043f. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u0441\u043b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430.<\/li>\n<li><b>\u041c\u0438\u043d\u0443\u0441 (-)<\/b> \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0435\u0440\u0435\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/li>\n<li><b>\u041f\u043b\u044e\u0441 (+)<\/b> \u2014 \u043a\u0430\u043a \u0431\u0435\u0437 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0432\u0435\u0440\u043d\u0451\u0442 <b>undefined<\/b> \u2014 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u0439; \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c \u0431\u0435\u0437 <b>return<\/b>).<\/li>\n<li><b>\u0420\u0430\u0432\u043d\u043e (=)<\/b> \u2014 \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u0443 \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u2014 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0442, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0432 \u043a\u0430\u043a\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0438 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u0430\u043a <code>sup(context, argArray)<\/code>.<\/li>\n<\/ul>\n<p>  \u0412\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443.<br \/>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0442\u0438\u043f \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 50% \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u2014 \u0435\u0449\u0451 40%.<\/p>\n<pre><code class=\"javascript\">var Child = Base.extend({   events: {     show: function (msg) {       \/\/ \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b\u043e\u0441\u044c - \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e, \u043f\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448,       \/\/ \u0440\u0430\u0437\u043e\u0441\u043b\u0430\u0442\u044c \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451.       this.render()     },      '-show': function (msg) {       \/\/ \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 - \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443       \/\/ \u0438 \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.       if (msg.length &lt; 3) {         throw '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0434\u043b\u044f show() \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430.'       }     },      '+show': function (res) {       \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u043e\u0432\u044b\u0439.       return '(' + res + ')'     },      '=show': function (sup, msg) {       \/\/ \u041d\u043e\u0432\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412 \u0434\u0438\u043a\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435       \/\/ \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e.       return '(' + sup(this, [msg + ' foo!']) + ')'     },   }, }) <\/code><\/pre>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u2014 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441 \u044d\u0442\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0441 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435:<\/p>\n<pre><code class=\"javascript\">var Child = Base.extend({   events: {     \/\/ \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442 render() \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c\u0438 show. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442.     show: 'render',   }, }) <\/code><\/pre>\n<p>  <a name=\"proto20\"><\/a>  <\/p>\n<h3>\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043b\u0435\u0442\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435-2.0<\/h3>\n<p>  \u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u2026 \u0410 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 <b>extend<\/b>?<\/p>\n<p>  \u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u2014 \u043d\u0435\u0442. \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u2014 \u043e\u043d\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435, \u0438\u0445 \u043a\u0430\u0448\u0435\u0439 \u043d\u0435 \u043a\u043e\u0440\u043c\u0438, \u0434\u0430\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u0431\u0443\u0434\u0438\u0442\u044c\u0441\u044f. \u0414\u0430, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432!<\/p>\n<pre><code class=\"javascript\">var Base = Sqimitive.Sqimitive.extend({   property: 'Hello',    show: function (right) {     alert(this.property + right)   }, })  var base = new Base base.on('=show', function (sup) {   sup(this, [' - I alert']) }) <\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (<a href=\"http:\/\/jsfiddle.net\/Proger\/mmfgjkmc\/\">JSFiddle<\/a>) \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u043e\u0442 <b>Base<\/b> \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u043b\u0438 \u0442\u0430\u043c \u043c\u0435\u0442\u043e\u0434. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e \u043d\u0430 \u00ab\u0436\u0438\u0432\u043e\u043c\u00bb \u043e\u0431\u044a\u0435\u043a\u0442\u0435, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0432 \u0441\u0432\u043e\u0451\u043c \u0440\u043e\u0434\u0435. \u0412 \u0434\u043e\u0431\u0430\u0432\u043e\u043a \u2014 \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0438 \u0443\u0431\u0440\u0430\u0442\u044c (<a href=\"http:\/\/jsfiddle.net\/Proger\/hewL8kwe\/\">JSFIddle<\/a>):<\/p>\n<pre><code class=\"javascript\">base.off('show') <\/code><\/pre>\n<p>  \u041d\u043e \u0431\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b: \u044d\u0442\u043e \u0443\u0431\u0435\u0440\u0451\u0442 <em>\u0432\u0441\u0435<\/em> \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f <b>show<\/b>, \u043a\u0440\u043e\u043c\u0435 \u00ab\u043f\u0440\u0438\u043f\u0430\u044f\u043d\u043d\u044b\u0445\u00bb \u2014 <b>fused<\/b> (\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0435, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043e\u0434\u043d\u0438 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445). \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u0448 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (<a href=\"http:\/\/jsfiddle.net\/Proger\/gve2ty1z\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var handlerID = base.on('=show', function (sup) {   sup(this, [' - I alert']) })  base.off(handlerID) <\/code><\/pre>\n<p>  \u0410 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u043b\u0438 \u2014 <b>Base.show<\/b>? \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0432 <a href=\"http:\/\/jsfiddle.net\/Proger\/gve2ty1z\/\">JSFiddle<\/a>, \u043e\u043d \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e <b>=show<\/b>-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u0441\u043d\u044f\u0442. \u0412\u0441\u0451, \u043a\u0430\u043a \u0443 \u043b\u044e\u0434\u0435\u0439.<\/p>\n<p>  \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0431\u043b\u043e\u043a\u0435 <b>events<\/b>.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 <a href=\"http:\/\/squizzle.me\/js\/sqimitive#corei-on\"><b>on<\/b><\/a> \u0438 <a href=\"http:\/\/squizzle.me\/js\/sqimitive#corei-off\"><b>off<\/b><\/a> \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u0438 <b><a href=\"http:\/\/squizzle.me\/js\/sqimitive#corei-once\">once<\/a><\/b> \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <b>on<\/b>, \u043d\u043e \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u0431\u044b\u043b \u0432\u044b\u0437\u0432\u0430\u043d \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437.<\/p>\n<p>  <a name=\"autooff\"><\/a>  <\/p>\n<h2>\u041e \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u044f\u0445 \u0441 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e<\/h2>\n<p>  \u0414\u043e \u043f\u043e\u0440\u044b \u0434\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0430\u043b\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435, \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u043c\u0438\u0440 \u0438 \u0438\u0434\u0438\u043b\u043b\u0438\u044f. \u041d\u043e \u0442\u0430\u043a \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0440\u0443\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438 \u0441\u043e\u0442\u043d\u0438, \u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0437\u0430 \u0442\u044b\u0441\u044f\u0447\u0438. \u041e\u043d\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0431\u043e\u0440\u044e\u0442\u0441\u044f \u0437\u0430 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0434 \u0441\u043e\u043b\u043d\u0446\u0435\u043c \u0432 \u0442\u0435\u0441\u043d\u043e\u0439 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435 DOM. \u0412 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0432\u0441\u0435 \u0432\u0438\u0441\u0435\u0442\u044c \u0432 \u0444\u043e\u043d\u0435 \u2014 \u043d\u0435 \u0433\u0443\u043c\u0430\u043d\u043d\u043e. \u0418 \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u2014 \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u00ab\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f\u00bb \u043a \u043c\u0430\u0442\u0440\u0438\u0446\u0435, \u0430 \u043a\u043e\u0433\u0434\u0430 \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 \u043a\u0430\u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0438\u0437 \u0431\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0438\u0440\u0430 \u043a \u043f\u0440\u0430\u043e\u0442\u0446\u0430\u043c?<\/p>\n<p>  \u0412 Backbone \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u0442\u043e\u0434\u044b <b>listenTo<\/b> \u0438 <b>stopListening<\/b> (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u0432\u044f\u0437\u0435\u0439 \u0441 \u043d\u0438\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0430\u043c Backbone \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0446\u0438\u0440\u043a\u0443\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 (\u0438\u043b\u0438 \u0432\u0438\u0434\u043e\u0432, View).<\/p>\n<p>  \u0412 Sqimitive \u0435\u0441\u0442\u044c \u0438 \u0430\u043d\u0430\u043b\u043e\u0433 <b>listenTo<\/b>, \u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u0430 \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"javascript\">var Bindable = Sqimitive.Sqimitive.extend({   \/\/ opt (option) \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 Sqimitive \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d attribute \u0432 Backbone: \u043e\u043d \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435   \/\/ \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0443-\u0442\u0440\u043e\u0439\u043a\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439.   _opt: {     \/\/ \u042d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0431\u044b\u043b\u0438 \u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u043b\u0438 \u043d\u0435\u0442.     wasBound: false,   },    events: {     \/\/ postInit \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c     \/\/ \u043d\u0430 owned - \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u044b\u043b \u0432\u043b\u043e\u0436\u0435\u043d \u0432 \u0434\u0440\u0443\u0433\u043e\u0439.     postInit: 'bindAll',     \/\/ unnest \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f.     '-unnest': 'unbindAll',   },    bindAll: function () {     \/\/ ifSet \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043b\u0438 \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0441\u0442\u0430\u0440\u043e\u0433\u043e.     this.ifSet('wasBound', true) && this.bind(this)     \/\/ sink \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e.     return this.sink('bindALl')   },    unbindAll: function () {     if (this._parent && this.ifSet('wasBound', false)) {       this.unbind(this)     }     return this.sink('unbindAll')   },    \/\/ \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0443\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u044e \u043b\u043e\u0433\u0438\u043a\u0443 - \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442   \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435. \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e   \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u044b\u043b \u0432\u044b\u0437\u0432\u0430\u043d unbind.   bind: function () { },    \/\/ \u041e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f bind - \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438. \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437,   \/\/ \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u044b\u043b \u0432\u044b\u0437\u0432\u0430\u043d bind.   unbind: function (self) {     \/\/ autoOff \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 - \u0430\u043d\u0430\u043b\u043e\u0433 stopListening. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441     \/\/ \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0447\u0435\u0440\u0435\u0437 autoOff('event') - \u0441\u043c. \u043d\u0438\u0436\u0435.     this.autoOff()   }, }) <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c <b>Bindable<\/b>, \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0432 \u0435\u0433\u043e \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"javascript\">var MyObject = Bindable.extend({   _opt: {     someObject: null,   \/\/ \u043d\u0435\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Sqimitive, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b &quot;\u0441\u043b\u0443\u0448\u0430\u0435\u043c&quot;.   },    events: {     bind: function () {       this.autoOff(this.get('someObject'), {         event1: ...,         event2: ...,       })     },   }, })  new MyObject({someObject: new X}) <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c <code>MyObject<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c) <code>someObject<\/code>, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0432\u0443\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439: <code>event1<\/code> \u0438 <code>event2<\/code>. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/squizzle.me\/js\/sqimitive#corei-autoOff\"><b>autoOff<\/b><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <b>on<\/b>, \u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0437\u0430\u0442\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <b>unbind<\/b>, <b>autoOff()<\/b> \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (<code>MyObject<\/code>) \u0441\u043e \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b \u0432\u044b\u0437\u0432\u0430\u043d (<code>someObject<\/code>).<\/p>\n<p>  \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 Sqimitive, \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0430\u0448 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441 <code>Sqimitive<\/code>.<\/p>\n<p>  \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a <b>autoOff<\/b> \u2014 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (\u0430 \u043d\u0435 \u0442\u043e\u0442, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a). \u0412 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:<\/p>\n<pre><code class=\"javascript\">this.autoOff(someObject, {   \/\/ \u0412\u044b\u0437\u0432\u0430\u0442\u044c render() \u043d\u0430 this \u043f\u0440\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0438 change \u0432 someObject.   change: 'render',   nest: 'render', })  \/\/ \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443: someObject.on('change', function () { this.render.apply(this, arguments) }, this) someObject.on('nest',   function () { this.nest.apply(this, arguments) },   this) <\/code><\/pre>\n<p>  \u0423 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u2014 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u043c. \u0432 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#corei-on\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  <a name=\"nesting\"><\/a>  <\/p>\n<h2>\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u2014 \u043d\u0430\u0448\u0435 \u0432\u0441\u0451<\/h2>\n<p>  \u0412 Backbone, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f (\u0447\u0438\u0442\u0430\u0439 \u2014 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e) \u0443\u0434\u0435\u043b\u0435\u043d\u043e \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430. \u0410 \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u0430\u044f \u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u041f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 <a href=\"http:\/\/www.marionettejs.com\">Marionette.js<\/a> \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a, \u043d\u043e \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0437\u0438\u0436\u0434\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0432\u0441\u0451 \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044d\u043d\u0435\u0440\u0433\u0438\u0438, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0431\u044b \u0432\u0441\u0435 \u0441\u0438\u0434\u0435\u043b\u0438 \u043f\u043e \u0434\u043e\u043c\u0430\u043c. \u0410 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u2014 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u043e\u0433\u043e \u0440\u0443\u0433\u0430\u0442\u044c \u2014 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 Backbone \u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0448\u0442\u0430\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432, \u0430\u0432\u0442\u043e\u0440\u043e\u0432 Marionette \u0437\u0430 \u0438\u0445 \u043b\u043e\u0433\u0438\u043a\u0443, \u0441\u0435\u0431\u044f \u2014 \u0437\u0430 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0441 \u043d\u0438\u043c\u0438 \u043c\u0438\u0440\u043e\u0432\u043e\u0437\u0437\u0440\u0435\u043d\u0438\u0435, \u0438\u043b\u0438 JavaScript \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d \u00ab\u043d\u0435 \u0442\u0430\u043a\u043e\u0439, \u043a\u0430\u043a \u0432\u0441\u0435\u00bb.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, <em>Marionette<\/em> \u2014 \u044d\u0442\u043e \u0435\u0449\u0451 4 000 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0432 \u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c. \u0410 \u0432\u0435\u0434\u044c \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u2014 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u2014 \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (<em>Marionette<\/em>, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442).<\/p>\n<p>  \u0412 Sqimitive \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c-\u043f\u043e\u0442\u043e\u043c\u043e\u043a \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0421\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0432\u0443\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432: <code>Sqimitive.Core<\/code> \u0438 <code>Sqimitive.Sqimitive<\/code>. <b>Core<\/b> \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e\u0435 \u044f\u0434\u0440\u043e, \u0432\u0441\u0451 \u0442\u043e, \u0447\u0442\u043e \u044f \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435. <b>Sqimitive<\/b> \u2014 \u0435\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u043f\u0446\u0438\u0438 \u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e <b>Sqimitive<\/b> \u0434\u0430\u0451\u0442 \u0442\u043e\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u0435\u043d \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. <b>Core<\/b> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u044b\u0439 (\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439) \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c.<\/p>\n<p>  \u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 Sqimitive \u043d\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 <b>\u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/b> (M-C-V). \u0415\u0434\u0438\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043a\u0430\u043a <em>\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438<\/em> (\u043f\u0440\u0438\u0441\u0443\u0449\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c \u0432 Backbone) \u2014 \u0438\u0445 \u0437\u043e\u0432\u0443\u0442 \u00ab\u043e\u043f\u0446\u0438\u044f\u043c\u0438\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c <em>\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/em> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e (\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0435\u0441\u044c \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <em>Underscore.js<\/em>), \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043d\u0435\u043a\u0443\u044e \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0441 \u0447\u0435\u043c-\u0442\u043e \u0435\u0434\u0438\u043d\u044b\u043c, \u0431\u0435\u0437\u043b\u0438\u043a\u0438\u043c, \u0430 \u043d\u0435 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0414\u043b\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 <b>_opt<\/b>, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u2014 \u043d\u0435\u0447\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0435, \u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 (\u0434\u043e\u0441\u0442\u0443\u043f, \u0437\u0430\u043c\u0435\u043d\u0430) \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0434\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432 <b>ifSet<\/b> \u0438 <b>get<\/b>, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 <code>normalize_OPT<\/code>, \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044f \u043d\u0430 <code>change_OPT<\/code> \u0438 <code>change<\/code> \u2014 \u043e\u0431 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435.<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0434\u0437\u0435\u043d\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435 <em>Marionette<\/em>, <em>Ember<\/em> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u0441\u043b\u043e\u0436\u043d\u044b. \u0412 <em>Ember<\/em> \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 (computer, observers, bindings), \u0432 <em>Marionette<\/em> \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 (\u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438, \u0440\u0435\u0433\u0438\u043e\u043d\u044b, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435). \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u2014 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434. \u041d\u043e \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0447\u0442\u043e \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0430 \u0438\u0437 \u043f\u0443\u0448\u043a\u0438 \u043f\u043e \u0432\u043e\u0440\u043e\u0431\u044c\u044f\u043c. \u0414\u044b\u043c\u0430 \u0438 \u0448\u0443\u043c\u0430 \u043c\u043d\u043e\u0433\u043e, \u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u0430, \u043d\u043e \u0441\u0430\u043c\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0437\u0443\u0447\u0438\u0442\u044c, \u043a\u0430\u043a \u043b\u0435\u0442\u0430\u044e\u0442 <s>\u043f\u0443\u0448\u043a\u0438<\/s> \u0432\u043e\u0440\u043e\u0431\u044c\u0438 \u0438 \u044f\u0434\u0440\u0430.<\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0430\u043a\u0438\u0445 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0438\u0445 \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043f\u043e\u0434 \u0432\u0430\u0448\u0443 \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>  <b>\u041d\u0438\u0436\u0435 \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 Sqimitive:<\/b><\/p>\n<pre><code class=\"javascript\">var MyItem = Sqimitive.Sqimitive.extend({   \/\/ \u041a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.   _opt: {     complete: false,     something: 'bar',   }, })  var MyCollection = Sqimitive.Sqimitive.extend({   _childClass: MyItem,   _childEvents: ['change', 'foobar'],    _opt: {     \/\/ \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 !complete.     allowIncomplete: false,   },    events: {     \/\/ \u041e\u043f\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c - \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043e.     change_allowIncomplete: function (newValue) {       newValue || this.each(this._checkComplete, this)     },      \/\/ \u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f - \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0435\u0433\u043e.     '.change': '_checkComplete',      \/\/ \u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 - \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c.     '+nest': '_checkComplete',   },    _checkComplete: function (sqim) {     if (!this.get('allowIncomplete') && !sqim.get('complete')) {       throw 'This collection only allows complete items!'     }   }, }) <\/code><\/pre>\n<p>  \u041c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430: <b>MyItem<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u0446\u0438\u044e (\u0430\u0442\u0440\u0438\u0431\u0443\u0442) <b>complete<\/b>, \u0438 <b>MyCollection<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439:<\/p>\n<ul>\n<li>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b <code>MyItem<\/code>, \u043d\u0430 \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <b>_childClass<\/b><\/li>\n<li>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f <b>.change<\/b> \u0438 <b>.foobar<\/b> (\u0441 \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439), \u0435\u0441\u043b\u0438 <b>change<\/b> \u0438 <b>foobar<\/b> (\u0431\u0435\u0437 \u0442\u043e\u0447\u043a\u0438) \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442<\/li>\n<li>\u0418\u043c\u0435\u0435\u0442 \u043e\u043f\u0446\u0438\u044e <b>allowIncomplete<\/b>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0438\u0445 <b>complete<\/b> \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u0435 \u0431\u044b\u0442\u044c <code>false<\/code>, \u0435\u0441\u043b\u0438 <code>allowIncomplete<\/code> \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d)<\/li>\n<li>\u041f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 <b>allowIncomplete<\/b> \u0432 <code>false<\/code> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/li>\n<li>\u041f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044e <b>.change<\/b>) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/li>\n<li>\u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 (<b>nest<\/b>) \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/li>\n<\/ul>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0435-<b>complete<\/b> \u043e\u0431\u044a\u0435\u043a\u0442\u044b (<a href=\"http:\/\/jsfiddle.net\/Proger\/pwxq91ex\/3\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var col = new MyCollection  var item1 = new MyItem col.nest(item1)   \/\/ exception  var item2 = new MyItem({complete: true}) col.nest(item2)   \/\/ okay  item2.set('complete', false)   \/\/ exception <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u2014 \u043a\u043e\u0433\u0434\u0430 \u0444\u043b\u0430\u0433 <b>allowIncomplete<\/b> \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0445\u043e\u0434\u0443 (<a href=\"http:\/\/jsfiddle.net\/Proger\/k2vn2ru7\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var col = new MyCollection({allowIncomplete: true})  var item1 = new MyItem col.nest(item1)   \/\/ okay  col.set('allowIncomplete', false)   \/\/ exception <\/code><\/pre>\n<p>  \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e, \u043d\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043b\u0438\u0431\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u0441\u043b\u0443\u0448\u0430\u044f <b>.-change<\/b> \u0438 <b>-nest<\/b>), \u043b\u0438\u0431\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043d\u0435\u0443\u0433\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (\u043f\u0440\u0438 <code>change_allowIncomplete<\/code>).<\/p>\n<p>  <a name=\"underscore\"><\/a>  <\/p>\n<h3>UnderGoodness<\/h3>\n<p>  Sqimitive \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <a href=\"http:\/\/underscorejs.org\">Underscore.js<\/a> \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 ECMAScript. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438.<\/p>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u043e\u043a\u043e\u043b\u043e 40) \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 Sqimitive \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0435\u0433\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 <b>MyCollection<\/b>, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435. \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u0432 <a href=\"http:\/\/squizzle.me\/js\/sqimitive#sqimitivei-underscore\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<pre><code class=\"javascript\">var col = new MyCollection col.nest( new MyItem({complete: true}) ) col.nest( new MyItem({something: 'item2'}) ) col.nest( new MyItem({complete: true, something: 'item3'}) )  var completeCounts = col.countBy(function (sqim) {   return sqim.get('complete') ? 'done' : 'undone' })   \/\/ completeCounts = {done: 2, undone: 1}  var isEveryComplete = col.every(function (sqim) {   return sqim.get('complete') })   \/\/ isEveryComplete = false, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438\u043c\u0435\u044e\u0442 complete == true.  var allComplete = col.filter( Sqimitive.Sqimitive.picker('get', 'complete') )   \/\/ \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 picker() - \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u044b\u0448\u0435.   \/\/ allComplete = [MyItem item1, MyItem item3] - \u0434\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 complete == true.  var firstComplete = col.find( Sqimitive.Sqimitive.picker('get', 'complete') )   \/\/ firstComplete = MyItem item1 (\u0435\u0451 complete == true). \u041b\u0438\u0431\u043e undefined,  var doneUndone = col.partition( Sqimitive.Sqimitive.picker('get', 'complete') )   \/\/ doneUndone = [[item1, item3], [item2]] - \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u043e\u043c\u0435\u0449\u0430\u044f   \/\/ \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0435 - \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439.  var firstChild = col.first() var lastChild = col.last() var parentKeys = col.keys() var three = col.length var item2 = col.at(1) var item2_3 = col.slice(1, 1)  var somethings = col.invoke('get', 'something')   \/\/ somethings = ['bar', 'item2', 'item3'] - \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438   \/\/ \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 col.  var sorted = col.sortBy( Sqimitive.Sqimitive.picker('get', 'something') )   \/\/ sorted = [item1, item2, item3] - \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445   \/\/ \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0435\u0440\u043d\u0443\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440.  var serialized = col.invoke('get')   \/\/ \u0410\u043d\u0430\u043b\u043e\u0433 Backbone.Collection.toJSON(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 shallow copy.  col.invoke('render')   \/\/ \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442 render() \u043d\u0430 \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445. \u0427\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.  var cids = col.map(function (sqim) { return sqim._cid })   \/\/ cids = ['p11', 'p12', 'p13'] - \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a invoke(), \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442   \/\/ \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f. _cid - \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.  col.each(function (sqim, key) {   alert(key + ': ' + sqim._cid) }, col)   \/\/ \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 3 \u0440\u0430\u0437\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 col (this). <\/code><\/pre>\n<p>  <a name=\"opt\"><\/a>  <\/p>\n<h2>\u0427\u0442\u043e \u0432 \u043e\u043f\u0446\u0438\u044f\u0445 \u0442\u0435\u0431\u0435 \u043c\u043e\u0451\u043c?<\/h2>\n<p>  \u041e\u043f\u0446\u0438\u0438 \u0438\u043b\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u2014 \u043d\u0435\u043e\u0431\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0432\u0435\u0449\u044c \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 Backbone. \u042d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430 \u0434\u043b\u044f <b>state-based programming<\/b>, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0448 \u043a\u043e\u0434 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0440\u0430\u0437\u0443, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u0445 \u0432 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u043e\u0442 \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0445 \u043c\u043d\u043e\u0433\u043e \u0438 \u0438\u0437 \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 <code>_updateSize<\/code> \u0438 <code>_checkInput<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0430\u043a\u0430\u0440\u043e\u043d\u044b).<\/p>\n<p>  \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0434\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445, \u0441\u0430\u043c\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u044d\u0442\u0438\u043c \u0441\u043b\u0430\u0432\u044f\u0442\u0441\u044f <em>Angular<\/em>, <em>Knockout<\/em> \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, <em>React<\/em>. \u0412 Sqimitive \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430 (\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0435\u0441\u044c HTML \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e), \u043c\u043e\u0434\u0435\u043b\u0435\u0439 (\u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u044b \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c), \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443, \u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438 \u0438\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0451 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<pre><code class=\"javascript\">var MyView = Sqimitive.Sqimitive.extend({   _opt: {     name: '\u0418\u0432\u0430\u043d',     surname: '\u041f\u0435\u0442\u0440\u043e\u0432\u0438\u0447',     age: 900,   },    events: {     change: function (opt, value) {       this.$('.' + opt).text(value)     },      render: function () {       this.el.empty()         .append( $('&lt;p class=name&gt;').text(this.get('name')) )         .append( $('&lt;p class=surname&gt;').text(this.get('surname')) )         .append( $('&lt;p class=age&gt;').text(this.get('age')) )     },   }, }) <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 (<a href=\"http:\/\/jsfiddle.net\/Proger\/ugaybu7g\/2\/\">JSFiddle<\/a>) \u0438 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438:<\/p>\n<ul>\n<li>\u0414\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445) \u044d\u0442\u043e \u2014 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0443\u0448\u0430\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.<\/li>\n<li>HTML \u0437\u0430\u0434\u0430\u043d \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0434\u0435 \u043a\u043b\u0430\u0441\u0441\u0430. \u041f\u0443\u0440\u0438\u0441\u0442\u044b \u043d\u0435 \u043e\u0446\u0435\u043d\u044f\u0442, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u2014 \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"http:\/\/handlebarsjs.com\">Handlebars<\/a>, \u043d\u043e \u043e\u043d \u043e\u0431\u044a\u0451\u043c\u043d\u044b\u0439 \u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 Underscore \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 <b><a href=\"http:\/\/underscorejs.org\/#template\">template()<\/a><\/b>.<\/li>\n<li>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 <b>change<\/b> \u2014 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439, \u043d\u043e \u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <b>opt<\/b> \u0438 \u043e\u043d\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <b>name<\/b>, <b>surname<\/b> \u0438 <b>age<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"javascript\">var MyModel = Sqimitive.Sqimitive.extend({   _opt: {     name: '\u0418\u0432\u0430\u043d',     surname: '\u041f\u0435\u0442\u0440\u043e\u0432\u0438\u0447',     age: 900,   }, })  var MyView = Sqimitive.Sqimitive.extend({   _opt: {     model: null,   },    \/\/ \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u0434 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b   \/\/ \u043a\u0430\u043a &lt;script id=&quot;MyView&quot; type=&quot;text\/template&quot;&gt; \u0438\u043b\u0438 \u043d\u043e\u0432\u043e\u043c\u043e\u0434\u043d\u044b\u0439 &lt;template&gt;.   \/\/ \u041f\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e, \u0432 Sqimitive \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043e\u043f\u0446\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0441 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f,   \/\/ \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432.   _template: _.template(     '&lt;p class=&quot;name&quot;&gt;&lt;%- name %&gt;&lt;\/p&gt;' +     '&lt;p class=&quot;surname&quot;&gt;&lt;%- surname %&gt;&lt;\/p&gt;' +     '&lt;p class=&quot;age&quot;&gt;&lt;%- age %&gt;&lt;\/p&gt;'),    events: {     \/\/ \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, change \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f     \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043a\u0430\u043a \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e (\u043a\u0430\u043c\u0435\u043d\u044c \u0432 \u043e\u0433\u043e\u0440\u043e\u0434 Backbone).     change_model: function (newModel, oldModel) {       \/\/ \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043e\u0442 \u0441\u0442\u0430\u0440\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u0435\u0451 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u043b\u0438.       oldModel && oldModel.off(this)       newModel.on('change', '_modelChanged', this)     },      render: function () {       \/\/ get() \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d toJSON() \u0432 Backbone, \u0442\u043e\u043b\u044c\u043a\u043e       \/\/ \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432\u0441\u0435\u0445 \u043e\u043f\u0446\u0438\u0439 (shallow copy).       this.el.html( this._template(this.get('model').get()) )     },   },    _modelChanged: function (opt, value) {     if (\/^(name|surname|age)$\/.test(opt)) {       this.$('.' + opt).text(value)     }   }, }) <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 (<a href=\"http:\/\/jsfiddle.net\/Proger\/vs9cak4u\/2\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var view = new MyView({   el: $('#foo'),   model: new MyModel, })  \/\/ \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430. \u0413\u0434\u0435, \u043a\u0435\u043c \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \/\/ \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 postInit, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e. view.render()  view.get('model').set('name', '\u0412\u0430\u0441\u0438\u043b\u0438\u0439')   \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f _modelChanged('name', '\u0412\u0430\u0441\u0438\u043b\u0438\u0439', '\u0418\u0432\u0430\u043d') <\/code><\/pre>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u2014 \u043d\u043e \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u044d\u0442\u043e, \u0430 \u0442\u043e, \u0447\u0442\u043e Sqimitive \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u0430\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u0440\u0438\u0447\u0451\u043c \u043d\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0432\u044b\u0431\u043e\u0440\u0430 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u043d\u0430 \u0432\u0441\u044e \u0435\u0433\u043e \u0436\u0438\u0437\u043d\u044c (<em>Ember? Knockout? Backbone? Angular?<\/em>), \u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0434\u043b\u044f Backbone \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 View &lt; Collection &lt; Model \u0432 Sqimitive \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0430 \u0434\u043e View &lt; Model (\u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430), \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u043f\u0440\u043e\u0449\u0435 \u0438 \u043c\u0435\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c. \u041d\u043e \u0432\u044b \u0432\u043e\u043b\u044c\u043d\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u0438, \u043e\u0441\u0442\u0430\u0432\u0430\u044f\u0441\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Sqimitive.<\/p>\n<p>  <a name=\"owning\"><\/a>  <\/p>\n<h2>\u041d\u0435\u0440\u0430\u0434\u0438\u0432\u044b\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0438: \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0438 \u0441\u043f\u0438\u0441\u043a\u0438<\/h2>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u2014 \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e. \u041d\u0430 \u044f\u0437\u044b\u043a\u0435 Sqimitive \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c <em>\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u043c\u0438<\/em> (<a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#sqimitivei-_owning\"><b>owning<\/b><\/a>), \u0430 \u0432\u0442\u043e\u0440\u044b\u0435 \u2014 <em>\u043d\u0435\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u043c\u0438<\/em> (<b>non-owning<\/b>). \u0418\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c:<\/p>\n<ul>\n<li>\u0412\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u043d\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b <b>\u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445<\/b>. \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440: \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u043b\u043e\u0436\u0435\u043d \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0435\u0433\u043e \u0432\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u2014 \u043a\u0430\u043a \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u043d \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f. \u0418 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0430 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432.<\/li>\n<li>\u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0433\u043e <b>\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0435\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u043a\u043b\u044e\u0447<\/b>, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u0437\u043d\u0430\u0447\u0438\u0442\u0441\u044f. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d. \u041d\u0435\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u043e \u0441\u0435\u0431\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u043d\u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f.<\/li>\n<li>\u041d\u0430 \u0432\u043b\u0430\u0434\u0435\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u0440\u043e\u0434\u0435 <b>remove<\/b> \u0438 <b>bubble<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u2014 \u043a\u0430\u043a \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0438\u0449\u0443\u0449\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043b\u044f \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442, \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u2014 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u043d\u0435\u043a\u0438\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043d\u0451\u043c.<\/li>\n<li>\u041e\u0431\u0430 \u0442\u0438\u043f\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 <b>\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b Sqimitive<\/b>: \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e, \u043f\u043e\u0438\u0441\u043a, \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0442.\u043f.<\/li>\n<\/ul>\n<p>  \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u044d\u0442\u043e \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f, \u0430 \u043d\u0435\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0435 \u2014 \u043e\u0434\u043d\u043e\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 (<a href=\"http:\/\/jsfiddle.net\/Proger\/74oenL2y\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var MyList = Sqimitive.Sqimitive.extend({ \t\/\/ \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f.   _owning: false,   _childClass: MyItem,   _childEvents: ['change'], })  var item = new MyItem  var list1 = new MyList list1.nest(item)  var list2 = new MyList list2.nest(item)  alert(list1.length + ' ' + list2.length)   \/\/ alert('1 1') <\/code><\/pre>\n<p>  \u0418 \u0435\u0433\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c (<a href=\"http:\/\/jsfiddle.net\/Proger\/8z2gbdqr\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var MyList = Sqimitive.Sqimitive.extend({   \/\/ true \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c - \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.   _owning: true,   _childClass: MyItem,   _childEvents: ['change'], })  var item = new MyItem  var list1 = new MyList list1.nest(item)  var list2 = new MyList list2.nest(item)  alert(list1.length + ' ' + list2.length)   \/\/ alert('0 1')  alert(item._parent === list2)   \/\/ alert('TRUE') <\/code><\/pre>\n<p>  <a name=\"view\"><\/a>  <\/p>\n<h2>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0438\u0434\u044b<\/h2>\n<p>  \u0412\u0441\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u2014 \u0448\u0442\u0443\u043a\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u043d\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043a\u043e\u043d\u0451\u043c \u0432 \u0432\u0430\u043a\u0443\u0443\u043c\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u044d\u0442\u043e \u0433\u043e\u043b\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u0410 \u0432\u0435\u0434\u044c \u0432\u0441\u044f \u043d\u0430\u0448\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u0434\u0438 \u043d\u0435\u0433\u043e, \u0440\u043e\u0434\u0438\u043c\u043e\u0433\u043e.<\/p>\n<p>  \u041d\u0430 \u0441\u0446\u0435\u043d\u0443 \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u2014 Views.<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c Sqimitive \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 Backbone \u2014 \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c MVC \u0430\u0432\u0442\u043e\u0440\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0443\u0445\u0432\u0430\u0442\u0438\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0435\u0441\u0442\u044c \u043e\u0441\u0442\u0440\u044b\u0435 \u0443\u0433\u043b\u044b \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0437 DOM \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e HTML \u0432 <b>render<\/b> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b DOM \u044d\u0442\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0430 \u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u2014 \u043d\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e. (\u0414\u0430, \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f-\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043d\u043e \u0432\u0441\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0437\u0430\u0447\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430.)<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f (<a href=\"http:\/\/jsfiddle.net\/Proger\/7ak5wny7\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var MyView = Sqimitive.Sqimitive.extend({   el: {tag: 'aside', className: 'info'},    _opt: {     \/\/ \u041f\u0440\u0438\u0434\u0443\u043c\u0430\u0435\u043c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0444\u043b\u0430\u0433.     loaded: false,   },    elEvents: {     'click .something': '_somethingClicked',   },    events: {     \/\/ \u041e\u0431\u044b\u0447\u043d\u043e \u0444\u043b\u0430\u0433 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 render. \u041d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0442\u043e\u0447\u0435\u0447\u043d\u043e.     change_loaded: function (value) {       this.el.toggleClass('loaded', value)     },      render: function () {       this.el.html('Click &lt;u class=&quot;something&quot;&gt;here&lt;\/u&gt;?')     },   },    _somethingClicked: function (e) {     alert(e.target.tagName + ' clicked!')   }, })  var view = new MyView({el: $('body')}) view \t.render()\t\t\/\/ \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \t.attach()\t\t\/\/ \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 DOM (elEvents) \t.set('loaded', true) \t\t\/\/ &lt;aside class=&quot;info loaded&quot;&gt; <\/code><\/pre>\n<p>  \u0410 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c \u2014 \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 Sqimitive:<\/p>\n<pre><code class=\"javascript\">var MyList = Sqimitive.Sqimitive.extend({   \/\/ el \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 &lt;div&gt;.   \/\/ \u0412 \u043a\u043b\u0430\u0441\u0441\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 DOM \u043d\u0438 \u043a \u0447\u0435\u043c\u0443, \u0435\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c,   \/\/ \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0433\u043e\u043d\u044f\u0442\u044c \u0437\u0440\u044f \u0446\u0438\u043a\u043b\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.   el: false,    \/\/ \u041d\u0435\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u043d\u0430\u043c \u043d\u0435 \u0432\u0430\u0436\u043d\u044b.   _childClass: MyItem, })  var MyViewItem = Sqimitive.Sqimitive.extend({   el: {tag: 'li'},    _opt: {     model: null,    \/\/ MyItem.     \/\/ \u0422\u043e\u0447\u043a\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 this.el \u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0438\u0436\u0435.     attachPath: '.',   },    events: {     change_model: function (newModel, oldModel) {       oldModel && oldModel.off(this)        \/\/ \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u043d\u0435\u043a\u043e\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 - \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435       \/\/ \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0435\u0451 \u0438\u0437 \u043d\u0435\u0433\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438 \u0435\u0451 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435. MyList \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a.       \/\/ \u0415\u0441\u043b\u0438 \u0436\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0439 - \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 unnested.       newModel.on({         change: 'render',          \/\/ remove - \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0432\u043c\u0435\u0441\u0442\u0435         \/\/ \u0441 \u0435\u0433\u043e el (unnest \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 el \u0433\u0434\u0435 \u043e\u043d \u0435\u0441\u0442\u044c).         \/\/ \u0422\u0430\u043a \u043a\u0430\u043a on \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c this (3-\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440), \u0442\u043e \u0438 remove         \/\/ \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 -unnest \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 MyViewItem.         '-unnest': 'remove',       }, this)     },      unnest: function () {       \/\/ \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e - \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c MyViewItem \u0438       \/\/ \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0443\u0445\u043e\u0434\u0430 \u0441\u043e \u0441\u0446\u0435\u043d\u044b (\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f). \u041d\u043e \u043c\u043e\u0436\u0435\u043c \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c       \/\/ \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0442\u0430\u043a\u0442\u044b, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432 \u0435\u0433\u043e \u044f\u0432\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.       this.get('model') && this.get('model').off(this)     },      render: function () {       this.el.html(...)     },   }, })  var MyViewList = Sqimitive.Sqimitive.extend({   el: {tag: 'ul'},   _childClass: MyViewItem,    _opt: {     list: null,   \/\/ MyList.   },    events: {     change_list: function (newList, oldList) {       oldList && oldList.off(this)       newList.on('+nest', '_modelAdded', this)        \/\/ \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 newList.       this.invoke('remove')       newList.each(this._modelAdded, this)     },   },    _modelAdded: function (sqim) {     this.nest( new MyViewItem({model: sqim}) ) \t\t\t.render()   }, }) <\/code><\/pre>\n<p>  \u041c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0441 <b>MyViewList<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0436\u0438\u0442 \u043c\u043e\u0441\u0442\u0438\u043a\u043e\u043c \u043c\u0435\u0436\u0434\u0443 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043c\u043e\u0434\u0435\u043b\u0435\u0439 (\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439) <b>MyList<\/b> \u0438 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u2014 <b>MyViewItem<\/b>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u2014 \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0442\u0430\u043a \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0441\u0430\u043c\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 (\u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 <b>MyViewItem<\/b>).<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#sqimitivei-el\"><b>el<\/b><\/a> \u0432 \u0434\u0435\u0440\u0435\u0432\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u043a\u0430\u043a <code>el.appendTo(...)<\/code> \u2014 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u044f <b>elEvents<\/b> \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u0430 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#sqimitivei-attach\"><code>attach()<\/code><\/a><\/li>\n<li>\u0427\u0435\u0440\u0435\u0437 <code>item.attach($('...'))<\/code>, \u0442\u043e\u0433\u0434\u0430 \u0438 <b>el<\/b> \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f, \u0438 <b>elEvents<\/b> \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f<\/li>\n<li>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 <b>render<\/b> \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435 \u0438\u043b\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <b>attach()<\/b> \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u0437\u0430\u0434\u0430\u0432 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043e\u043f\u0446\u0438\u044e <b>attachPath<\/b>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u043e\u043c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0422\u043e\u0447\u043a\u0430, \u043a\u0430\u043a \u0432 <b>MyViewItem<\/b>, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u0430\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442.<\/li>\n<\/ul>\n<p>  \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043e\u043d\u0443\u0441\u0430 \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u043d\u0430 \u043b\u0435\u0442\u0443 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043b\u044f <b>MyViewList<\/b> \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0442\u0443\u0442 \u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 \u0438 \u0441\u0432\u043e\u0438 \u0441\u0432\u044f\u0437\u0438, \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 (<a href=\"http:\/\/jsfiddle.net\/Proger\/ohbf868a\/1\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var list = new MyList list.nest(new MyItem)   \/\/ list.length == 1  var view = new MyViewList({list: list})   \/\/ view.length == 1  list.nest(new MyItem)   \/\/ list.length == view.length == 2  list.at(1).remove()   \/\/ list.length == view.length == 1  var list2 = new MyList view.set('list', list2)   \/\/ list.length == 1   \/\/ list2.length == view.length == 0 <\/code><\/pre>\n<p>  <a name=\"assign\"><\/a>  <\/p>\n<h2>\u041e \u0431\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0436\u0438\u0437\u043d\u0438 \u0431\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>  \u0418\u0442\u0430\u043a, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0443 \u043d\u0430\u0441 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0441\u044f, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0435\u0441\u0442\u044c, \u0433\u0434\u0435 \u043f\u043e\u0449\u0451\u043b\u043a\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c\u0438. \u041d\u043e \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u043b\u0438 \u043e\u043d?<\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435\u0442 (<s>\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441<\/s>). \u041a\u0430\u043a \u0432 \u043c\u0438\u0440\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e \u0438 \u0437\u0435\u043c\u043b\u044f, \u0442\u0430\u043a \u0438 \u0432 \u0432\u0435\u0431-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u0444\u0440\u043e\u043d\u0442 \u0438 \u0442\u044b\u043b\u2026 \u043f\u0430\u0440\u0434\u043e\u043d, \u044d\u0442\u043e \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u0423 \u043d\u0430\u0441 \u044d\u0442\u043e \u0437\u0430\u0432\u0451\u0442\u0441\u044f <b>frontend<\/b> \u0438 <b>backend<\/b>, \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u2014 \u0433\u0434\u0435-\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0431\u0435\u0433\u0430\u0435\u0442 \u0438 \u0432\u0442\u043e\u0440\u043e\u0435.<\/p>\n<p>  \u0413\u043e\u0432\u043e\u0440\u044f \u043f\u043e-\u043f\u0440\u043e\u0441\u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0433\u0434\u0435-\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. \u0418 \u043f\u043e\u0431\u044b\u0441\u0442\u0440\u0435\u0435!<\/p>\n<p>  \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u2014 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 AJAX \u2014 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u0435\u0447\u0430 \u0434\u043b\u044f \u0434\u0436\u0435\u0434\u0430\u044f. \u041a\u0430\u0436\u0434\u0430\u044f \u0443\u0432\u0430\u0436\u0430\u044e\u0449\u0430\u044f \u0441\u0435\u0431\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c \u0434\u043e\u043b\u0433\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u00ab\u043b\u0443\u0447\u0448\u0438\u0439 \u0432 \u043c\u0438\u0440\u0435 API\u00bb, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443, \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u0436\u0435 \u043a\u0440\u0430\u0435\u043c \u043c\u044b\u0441\u043b\u0438 \u2014 \u0447\u0435\u0433\u043e \u0434\u043e\u0431\u0440\u043e\u0433\u043e.<\/p>\n<p>  \u0421\u043b\u043e\u0439 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 backend \u0435\u0441\u0442\u044c \u0432\u0435\u0437\u0434\u0435 \u2014 \u043e\u0442 <em>Backbone<\/em> \u0438 <em>jQuery<\/em> \u0434\u043e <em>Knockout<\/em> \u0438 <em>Ember<\/em>. \u0412 <em>Backbone<\/em> \u043e\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <b>sync<\/b> \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u0435\u0451 \u0441\u0440\u0435\u0434\u0443. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u043c\u0435\u044e\u0442 \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u2014 <b>parse<\/b>, <b>fetch<\/b>, <b>create<\/b> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <code>Backbone.sync<\/code> \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443.<\/p>\n<p>  <b>\u0412 Sqimitive \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043d\u0435\u0442.<\/b> \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f: \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432 80% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u043e\u0441\u0442\u044b\u043c <b>sync<\/b> \u0434\u0435\u043b\u043e \u043d\u0435 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u041d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u043e\u0442\u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043b\u0438\u0431\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0451 \u0447\u0442\u043e-\u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 (\u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e <b>fetch<\/b> \u0438 <b>parse<\/b>), \u043b\u0438\u0431\u043e \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0433\u043e\u0440\u043e\u0434 \u0438\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0436\u0435 20% \u2014 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 <code>$.ajax()<\/code> \u043d\u0430 5 \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u0445.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0435\u0449\u0451 \u0442\u0430\u043a \u0441\u0435\u0431\u0435. \u0414\u0440\u0443\u0433\u0430\u044f \u2014 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0430 \u0438 \u043a\u043e\u0432\u0430\u0440\u043d\u0430: \u0441\u0442\u0440\u043e\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Backbone \u043c\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043a \u0435\u0433\u043e \u0441\u043b\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u042d\u0442\u043e \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u043a API (\u0441\u0442\u0440\u043e\u0433\u0438\u0439 REST), \u0442\u0430\u043a \u0438 \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0414\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043b\u0438\u0448\u044c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u043d\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d\u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b \u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0437\u0430\u0440\u044b\u0442\u043e\u043c\u0443 \u0432 \u043d\u0435\u0434\u0440\u0430\u0445 <b>sync<\/b>. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0436\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043b\u043e\u044f \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a API \u0433\u0440\u043e\u0437\u0438\u0442 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0430, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a \u0443\u0432\u044f\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u0443\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 <b>parse<\/b> \u0432 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445.<\/p>\n<p>  \u0410 \u0440\u0430\u0437 \u0441\u0432\u043e\u0439 \u0441\u043b\u043e\u0439 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0438\u0448\u0435\u0442\u0441\u044f, \u0442\u043e \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439?<\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043e\u0439 \u043e\u043f\u044b\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a \u043d\u0438\u043c \u043f\u043e\u0434\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442 \u2014 \u043f\u043b\u043e\u0445\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u0410 \u0432 Backbone <b>sync<\/b> \u2014 \u044d\u0442\u043e, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0441\u043d\u043e\u0432\u0430 \u0432\u0441\u0435\u0433\u043e \u0438 \u0441 \u043d\u0438\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043a\u0443\u0447\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0433\u043e \u043b\u043e\u0433\u0438\u043a\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u043d\u0430 Rails.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u00ab\u0423 \u043d\u0430\u0441 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0437\u0430 \u0442\u0430\u043a\u043e\u0435 \u0432 \u043c\u043e\u0440\u0434\u0443 \u0434\u0430\u044e\u0442&#8230;\u00bb<\/b><\/p>\n<div class=\"spoiler_text\">\u041e\u0434\u043d\u0430\u0436\u0434\u044b, \u043a\u043e\u0433\u0434\u0430 \u044f \u0431\u044b\u043b \u0435\u0449\u0451 \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c \u0438 \u043d\u0435 \u0440\u0435\u0448\u0430\u043b\u0441\u044f \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430 Backbone, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 6 000 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0422\u0430\u043c \u043c\u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c <b>fetch()<\/b> \u043d\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. Backbone \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0443\u043f\u043e\u0440\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043c\u0435\u043b\u043e \u043e\u0431\u0445\u043e\u0434\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043d\u0438\u0445 <b>parse<\/b>.<\/p>\n<p>  \u0421\u043f\u0443\u0441\u0442\u044f \u044d\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0435\u0442\u043e\u043a \u044f, \u0437\u0430\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 \u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043c\u0438\u043d\u0443\u044f \u0438\u0445 <b>parse<\/b>. \u0412\u044b\u0445\u043e\u0434\u0438\u0442, <b>parse<\/b> \u0432 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u041b\u043e\u0433\u0438\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0438, \u043f\u043e-\u043c\u043e\u0435\u043c\u0443, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u0440\u0443\u0431\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.  <\/div>\n<\/div>\n<p>  <b>Sqimitive \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/b> \u0412\u043c\u0435\u0441\u0442\u043e \u0441\u043b\u043e\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0440\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0432\u0441\u0451 \u0438 \u0434\u0430\u0436\u0435 \u0432\u0430\u0448\u0438 \u0442\u0430\u043f\u043e\u0447\u043a\u0438 \u2014 \u043e\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438\u0448\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043a\u0430\u043a \u0438\u0437 API, \u0442\u0430\u043a \u0438 \u0438\u0437 cookies, <code>Local Storage<\/code>, <code>location.hash<\/code> \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430. \u041c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430: <code>assignChildren<\/code> \u0438 <code>assignResp<\/code>.<\/p>\n<p>  <a href=\"http:\/\/squizzle.me\/js\/sqimitive#sqimitivei-assignChildren\"><b>assignChildren<\/b><\/a> \u2014 \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 Backbone.<b>Collection<\/b>.parse + set. \u041d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432, \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438). assignChildren \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c (\u0441\u043e\u0437\u0434\u0430\u0451\u0442 <b>_childClass<\/b>) \u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0435\u043c\u0443 \u043e\u043f\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 assignResp. \u041d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u2014 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f.<\/p>\n<p>  <a href=\"http:\/\/squizzle.me\/js\/sqimitive#sqimitivei-assignResp\"><b>assignResp<\/b><\/a> \u2014 \u0430\u043d\u0430\u043b\u043e\u0433 <b>Model<\/b>.parse + set. \u041d\u0430 \u0432\u0445\u043e\u0434\u0435 \u2014 \u043d\u0435\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 \u0432 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0446\u0438\u0439 \u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0438\u0445, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f <code>normalize_OPT<\/code>, <code>change_OPT<\/code> \u0438 <code>change<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <a href=\"http:\/\/squizzle.me\/js\/sqimitive#sqimitivei-set\"><b>set<\/b><\/a>, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>  \u041e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u043b\u0443\u0436\u0430\u0442 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0432\u0430\u0448\u0435\u0433\u043e API \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 JavaScript. \u0418\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u00ab\u043d\u0435\u0447\u0438\u0441\u0442\u044b\u0435\u00bb \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043d\u043a\u043e \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0438\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u2014 \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <b>assignResp<\/b> \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>  <a name=\"assignresp\"><\/a>  <\/p>\n<h3>assignResp \u0438 _respToOpt \u2014 \u043a\u0430\u0440\u0442\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 API<\/h3>\n<p>  \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (\u043e\u043d \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u043e\u0442\u0432\u0435\u0442\u0430-\u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u043b\u044f <b>assignChildren<\/b>):<\/p>\n<pre><code class=\"javascript\">{   'thisID':    123,   'date':     '2014-10-03T10:26:22+03:00',   'parents':  '1 2 3',   'junk':     'ONk49Xo3SxEps8uCV9je8dhez',   'caption':  '\u0418\u043c\u044f', } <\/code><\/pre>\n<p>  \u041d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0446\u0438\u0438:<\/p>\n<pre><code class=\"javascript\">var MyModel = Sqimitive.Sqimitive.extend({   \/\/ \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0446\u0438\u0439-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d defaults \u0432 Backbone.   _opt: {     id: 0,     date: new Date,     parents: [],     caption: '',   }, }) <\/code><\/pre>\n<p>  \u041c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435:<\/p>\n<ul>\n<li><b>id<\/b> \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <b>thisID<\/b><\/li>\n<li><b>date<\/b> \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0431\u044a\u0435\u043a\u0442<\/li>\n<li><b>parents<\/b> \u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u0433\u0434\u0435 ID \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438<\/li>\n<li><b>junk<\/b> \u2014 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u00ab\u043b\u0435\u0432\u043e\u0435\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u043e\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0443<\/li>\n<li><b>caption<\/b> \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/li>\n<\/ul>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"javascript\">var MyModel = Sqimitive.Sqimitive.extend({   _opt: {     id: 0,     date: new Date,     parents: [],     caption: '',   },    \/\/ \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c assignResp \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043d\u043e   \/\/ \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430.   _respToOpt: {     \/\/ \u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430.     thisID: 'id',      \/\/ \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432, \u0433\u0434\u0435     \/\/ \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 - \u0438\u043c\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0438, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f.     date: function (str) {       return ['date', new Date(str)]     },      \/\/ \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430.     junk: false,      parents: function (str) {       return ['parents', str.split(\/\\s+\/)]     },      \/\/ \u041f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u043a\u043b\u044e\u0447\u0430\/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e caption: 'caption'.     caption: true,   },    \/\/ \u0412\u0441\u0451, \u0447\u0442\u043e \u043d\u0438\u0436\u0435 - \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0447\u0438\u0441\u0442\u043e\u0442\u0435.   normalize_id: function (value) {     var id = parseInt(value)     if (isNaN(id)) { throw 'What kind of ID is that?' }     return id   },    normalize_parents: function (value) {     return _.map([].concat(value), this.normalize_id, this)   },    normalize_caption: function (value) {     return value.replace(\/^\\s+|\\s+$\/g, '')   }, }) <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 (<a href=\"http:\/\/jsfiddle.net\/Proger\/xbno9wrv\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var model = new MyModel $.getJSON('api\/route', _.bind(model.assignResp, model))  \/\/ \u041b\u0438\u0431\u043e \u0438\u0437 POST: $.ajax({   url: 'api\/route',   type: 'POST',   data: {...},   context: model,   success: model.assignResp, }) <\/code><\/pre>\n<p>  <a name=\"other\"><\/a>  <\/p>\n<h2>\u0418 \u044d\u0442\u043e \u0447\u0442\u043e, \u0432\u0441\u0451?<\/h2>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043d\u0435\u0442. \u0412\u0435\u0441\u044c \u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0431\u044b\u043b \u043e\u043f\u0438\u0441\u0430\u043b, \u043d\u043e \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445 Sqimitive \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041d\u0438\u0436\u0435 \u2014 \u043a\u0440\u0430\u0442\u043a\u043e \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437 \u043d\u0438\u0445. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u0432\u0435\u0441\u0442\u0430 \u00ab\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/\">Zen Book<\/a>\u00bb.<\/p>\n<h3>_shareProps: \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432<\/h3>\n<p>  <a href=\"http:\/\/www.youtube.com\/watch?v=eVpVHGiELf8\">Let&#8217;s not talk about languages that suck<\/a>. Let&#8217;s talk about Python.<\/p>\n<p>  \u0412 Python, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 (\u043d\u0435\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c\u0438) \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u2014 \u0432\u044b \u043d\u0435\u043d\u0430\u0440\u043e\u043a\u043e\u043c \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u0438\u0445 \u043e\u0431\u0449\u0438\u043c\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u043d\u043e\u0432\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"python\">class SomeObject:   list = []    def push(self, value):     self.list.append(value)     return self  print SomeObject().push('123').list   #=&gt; ['123']  print SomeObject().push('345').list   #=&gt; ['123', '456'] <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0443 JavaScript \u0438 Python \u0438 \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e\u0431\u0449\u0435\u0435 \u2014 \u0442\u0430\u043a \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u043a\u0430\u043f\u044b\u0432\u0430\u043d\u0438\u0435 \u044f\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0430. <a href=\"http:\/\/jsfiddle.net\/Proger\/pp1j21L2\/\">JSFiddle<\/a>:<\/p>\n<pre><code class=\"javascript\">var SomeObject = Backbone.View.extend({   list: [],    push: function (value) {     this.list.push(value)     return this   }, })  console.dir( (new SomeObject).push('123').list )   \/\/=&gt; ['123']  console.dir( (new SomeObject).push('456').list )   \/\/=&gt; ['123', '456'] <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u0447\u0438\u043d\u0430, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u043f\u043e\u043d\u044f\u0442\u043d\u0430: \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432 \u043d\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 <em>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f-\u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/em>, \u0430 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0442\u0435\u043c \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440. \u0410 \u0432\u0435\u0434\u044c, \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043e\u0431\u043e\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u043c\u0430\u0441\u0441\u0438\u0432 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0432 <b>extend<\/b>.<\/p>\n<p>  \u041b\u043e\u0433\u0438\u0447\u043d\u043e? \u041a\u043e\u043d\u0435\u0447\u043d\u043e. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e? \u041d\u0435 \u0431\u043e\u043b\u0435\u0435, \u0447\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Windows (\u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0441\u0442\u0430\u0442\u0438, \u0442\u043e\u0436\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/238915\/\">\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u043d<\/a>).<\/p>\n<p>  \u0420\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u2014 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438.<\/p>\n<p>  \u0412 Sqimitive \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f (deep copy) \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u044f\u0432\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#cores-_shareProps\"><b>_shareProps<\/b><\/a>. \u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u043b\u0430\u0441\u0441 \u2014 \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <b>_childClass<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043d\u043e \u0440\u0435\u0434\u043a\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#sqimitivei-init\"><b>init<\/b><\/a>.<\/p>\n<pre><code class=\"javascript\">var MySqimitive = Sqimitive.Sqimitive.extend({ ... }) MySqimitive._shareProps.push('notToCloneSomething') <\/code><\/pre>\n<h3>_mergeProps: \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c<\/h3>\n<p>  \u0412 Backbone, \u043f\u0440\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0442\u043e\u043c\u043a\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435. \u042d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u044b\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u0441\u0442\u044b\u043b\u044c, \u043a\u0430\u043a <b>__super__<\/b>. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 (<a href=\"http:\/\/jsfiddle.net\/Proger\/u2n3e6ex\/1\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var MyView = Backbone.View.extend({   events: {     'click .me': function () { alert('\u0415\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0430\u043a\u0442!') },   }, })  var MyOtherView = MyView.extend({   events: {     'keypress .me': function () { alert('\u041c\u044b \u0441\u043b\u043e\u043c\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 :(') },   }, }) <\/code><\/pre>\n<p>  <b>MyOtherView<\/b> \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u043b \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 <b>MyView<\/b> \u0431\u043b\u043e\u043a <b>events<\/b>. \u0420\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0432\u0430: \u043b\u0438\u0431\u043e <code>events: _.extend(MyView.prototype.events, {...})<\/code>, \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 <b>events<\/b> \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435. \u0412\u0442\u043e\u0440\u043e\u0435 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e (\u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0441\u043b\u043e\u043c\u0430\u043d\u043e), \u043d\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0448\u0430. \u0417\u0434\u0435\u0441\u044c \u0431\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0441\u044f <b>events<\/b>, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0435\u0451 \u0440\u0430\u0437\u0440\u0443\u043b\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#cores-_mergeProps\"><b>_mergeProps<\/b><\/a> \u2014 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e-\u043c\u0430\u0441\u0441\u0438\u0432, \u0433\u0434\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u043f\u0440\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b. \u0414\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u044d\u0442\u043e <code>base.concat(child)<\/code>, \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u2014 <code>_.extend(base, child)<\/code> (\u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043f\u043e\u0442\u043e\u043c\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435). \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043d\u043e\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>null<\/code>\/<code>undefined<\/code>, \u0433\u0434\u0435 \u044d\u0442\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.<\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 <b>_mergeProps<\/b> \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b <code>elEvents<\/code>, <code>events<\/code> \u0438 <code>_opt<\/code> (\u0430 \u0442\u0430\u043a\u0436\u0435 <code>_shareProps<\/code>) \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 Backbone \u0432 Sqimitive \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0435\u0440\u043d\u043e: <code>MyOtherView<\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043e\u0431\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e \u0441\u043b\u0438\u044f\u043d\u0438\u0435\u043c \u043e\u043f\u0446\u0438\u0439 \u0432 \u043f\u043e\u0442\u043e\u043c\u043a\u0435 (<a href=\"http:\/\/jsfiddle.net\/Proger\/pz438ju6\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var MyBase = Sqimitive.Sqimitive.extend({   _opt: {     base: 123,     base2: 'kept',     complex: {a: 1},   }, })  var MyChild = MyBase.extend({   _opt: {     \/\/ \u0417\u0430\u043c\u0435\u043d\u0438\u0442 123.     base: 'replaced',     \/\/ \u0426\u0435\u043b\u0438\u043a\u043e\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442 {a: 1} - \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435.     complex: {b: 2},     \/\/ \u0414\u043e\u0431\u0430\u0432\u0438\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 _opt.     child: 'new',     \/\/ base2 - \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f.     \/\/base2: 'kept',   }, }) <\/code><\/pre>\n<h3>masker(): \u043f\u0435\u0440\u0435\u0434\u0430\u0439 \u043c\u043d\u0435 \u0438\u0445 \u0441 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c\u044e<\/h3>\n<p>  \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439, \u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e\u0439 \u0444\u0438\u0447\u0435 Sqimitive. \u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e callback-\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c <code>nest(key, object)<\/code> \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e ID \u0432 \u043d\u0435\u043a\u043e\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 <code>var list = {11: obj1, 22: obj2, 33: obj3}<\/code>.<\/p>\n<p>  \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<ul>\n<li> <code>$.each(list, _.bind(this.nest, this))<\/code> \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 jQuery \u043a\u043b\u044e\u0447\u0435\u0439 \u0432 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430   <\/li>\n<li> <code>_.each(list, function (o, k) { this.nest(k, o) }, this)<\/code>   <\/li>\n<li> <code>_.each(Sqimitive.Sqimitive.masker('21'), this.nest, this)<\/code>   <\/li>\n<\/ul>\n<p>  \u0422\u0440\u0435\u0442\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043b\u0438\u0430\u0441 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0430\u043a <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#cores-masker\"><b>masker<\/b><\/a> \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 <b>m<\/b>. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445, \u043d\u043e \u0441\u0443\u0442\u044c \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0441\u0442\u0440\u043e\u043a\u0435-\u043c\u0430\u0441\u043a\u0435, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 (\u043d\u043e\u043c\u0435\u0440 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430), \u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u2014 \u043d\u043e\u043c\u0435\u0440 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e (\u0434\u043b\u044f \u00ab\u0437\u0430\u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u0438).<\/p>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 API \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 <code>$.ajax<\/code>. jQuery \u043a\u0440\u043e\u043c\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 <b>success<\/b>, \u0430 <code>assignResp<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a \u0441\u0430\u043c \u043e\u0442\u0432\u0435\u0442, \u0442\u0430\u043a \u0438 \u043e\u043f\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c\u0443, \u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 jQuery \u043a\u0430\u043a \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0446\u0438\u0439. \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u043a\u0443:<\/p>\n<pre><code class=\"javascript\">$.getJSON('api\/route', masker(model.assignResp, '.', model)) <\/code><\/pre>\n<p>  \u0422\u043e\u0447\u043a\u0438 \u0432 \u043c\u0430\u0441\u043a\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0430 \u0432\u0441\u0451 \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u2014 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0434\u0435\u0441\u044c \u043a <b>assignResp<\/b> \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p>  <b>masker<\/b> \u043d\u0435\u044f\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 <b>events<\/b>, <b>elEvents<\/b>, <b>on<\/b> \u0438 <b>once<\/b> \u0432 \u0444\u043e\u0440\u043c\u0435 <code>\u0438\u043c\u044f\u041c\u0435\u0442\u043e\u0434\u0430[\u043c\u0430\u0441\u043a\u0430]<\/code> (\u0441\u043c. \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/#cores-expandFunc\"><b>expandFunc<\/b><\/a>). \u041d\u0438\u0436\u0435 \u2014 \u0441\u043b\u0435\u0433\u043a\u0430 \u043d\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439, \u043d\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 (<a href=\"http:\/\/jsfiddle.net\/Proger\/qczm6sh1\/\">JSFiddle<\/a>):<\/p>\n<pre><code class=\"javascript\">var MyView = Sqimitive.Sqimitive.extend({   \/\/ \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\/\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u0411\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435   \/\/ \u043d\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0435.   toggle: function (state) {     arguments.length || (state = !this.$('.contents').is(':visible'))     this.$('.contents').toggle(!!state)     return this   },    elEvents: {     \/\/ \u0414\u0435\u0444\u0438\u0441\u044b \u0432 \u043c\u0430\u0441\u043a\u0435 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u0414\u0435\u0444\u0438\u0441 \u0432 \u043a\u043e\u043d\u0446\u0435 - \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f.     \/\/ \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u043c\u0430\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b.     'click .toggle': 'toggle-',      \/\/ jQuery \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 event object, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 == true.     'click .show': 'toggle',      \/\/ 9 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 jQuery \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u0447\u0442\u043e != true.     \/\/ \u0414\u0435\u0444\u0438\u0441 \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u0442 \u043c\u0430\u0441\u043a\u0438 - \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0431\u044b\u043b \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u0442\u043e\u0434 toggle9.     'click .hide': 'toggle-9',   }, }) <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0431\u0435\u0437 \u043c\u0430\u0441\u043e\u043a \u2014 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043a\u043e\u043c\u0443-\u0442\u043e \u043e\u043d \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c, \u0438 \u0432\u0430\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/p>\n<pre><code class=\"javascript\">  elEvents: {     'click .toggle': function () {       this.toggle()     },      'click .show': function () {       this.toggle(true)     },      'click .hide': function () {       this.toggle(false)     },   }, <\/code><\/pre>\n<h3>\u041e\u043d \u0443\u043b\u0435\u0442\u0435\u043b\u2026 \u043d\u043e \u043e\u0431\u0435\u0449\u0430\u043b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f!<\/h3>\n<p>  \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043d\u0438\u0440\u0432\u0430\u043d\u0443 \u043f\u043e\u0434\u043e\u0448\u043b\u043e \u043a \u043a\u043e\u043d\u0446\u0443. \u041f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u044f \u0432\u0451\u043b \u043a\u0443\u0440\u0441\u043e\u0440 \u043a \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u0435\u043b\u0451\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0435 \u00ab\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u00bb, \u043c\u043e\u0438 \u043f\u0430\u043b\u044c\u0446\u044b \u0441\u043b\u0435\u0433\u043a\u0430 \u0434\u0440\u043e\u0436\u0430\u043b\u0438. \u041e\u0446\u0435\u043d\u044f\u0442 \u043b\u0438 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439? \u041c\u043d\u043e\u0433\u043e \u043b\u0438 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u0435\u0445 \u0438\u0437 \u043d\u0430\u0441, \u043a\u0442\u043e <a href=\"http:\/\/habrahabr.ru\/post\/236045\/\">\u0441\u0447\u0438\u0442\u0430\u0435\u0442<\/a>, \u0447\u0442\u043e \u0448\u043a\u0432\u0430\u043b \u0432\u0435\u0431-\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0432\u0435\u0434\u0451\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e \u043b\u0435\u0437\u0432\u0438\u044e \u043d\u043e\u0436\u0430?<\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u0448\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u041f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 <a href=\"https:\/\/github.com\/ProgerXP\/Sqimitive\">GitHub<\/a>, \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u2014 \u043d\u0430 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/\">squizzle.me<\/a>, \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 <a href=\"http:\/\/squizzle.me\/js\/sqimitive\/demo\">\u0442\u0443\u0442<\/a>. \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0432\u0430\u0448\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a \u2014 \u0432 <a href=\"http:\/\/habrahabr.ru\/conversations\/ProgerXP\/\">\u043b\u0438\u0447\u043a\u0435<\/a>.<\/p>\n<p>  \u0423\u0432\u0438\u0434\u0438\u043c\u0441\u044f \u043f\u043e \u0442\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u0430\u0440\u0440\u0438\u043a\u0430\u0434.<\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/20f\/605\/ac3\/20f605ac3c7340589513ff48227e8ead.png\" alt=\"Squizzle \u2665 it\"\/>      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/239149\/\"> http:\/\/habrahabr.ru\/post\/239149\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/d89\/eed\/127\/d89eed12756145b992a3d3c016abd61e.png\" align=\"left\"\/>\u0423\u0436\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/205692\/\">\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e<\/a> \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0430\u0439\u0442\u043e\u0432 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0431\u043e\u0440\u043e\u043c HTML\/PHP\/CSS\/JS-\u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. <em>Bower, Grunt, Component.js, AMD, Require.js, CoffeeScript, Clojure, Composer, npm, LESS<\/em> \u0438 \u0435\u0449\u0451 100500 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0441\u0436\u0430\u0442\u0438\u044f \u043a\u043e\u0434\u0430, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e JavaScript \u0432 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u043e\u0434\u0442\u0430\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0440\u0442, \u043f\u0440\u043e\u043f\u043e\u043b\u043a\u0438 \u043e\u0433\u043e\u0440\u043e\u0434\u0430 \u0438 \u0434\u0430\u0436\u0435 <a href=\"http:\/\/www.thinkgeek.com\/stuff\/looflirpa\/igrill.shtml\">\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u044f\u0438\u0447\u043d\u0438\u0446\u044b<\/a>.<\/p>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 \u044d\u0442\u043e \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u044f\u0435\u0442. \u0414\u0430 \u0447\u0442\u043e \u0442\u0430\u043c \u2014 95% \u043c\u043e\u0438\u0445 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0432 \u043e\u0434\u0438\u043d \u0433\u043e\u043b\u043e\u0441 \u0442\u0432\u0435\u0440\u0434\u044f\u0442, \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u0443-\u0442\u0440\u043e\u0439\u043a\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0441 \u043e\u0441\u043e\u0431\u043e\u0439, \u0443\u043b\u0438\u0447\u043d\u043e\u0439 \u043c\u0430\u0433\u0438\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u0430\u0431\u0430\u0445\u0430\u0442\u044c \u0441\u0430\u0439\u0442 \u043d\u0430 over-9000 \u0437\u0435\u043b\u0451\u043d\u044b\u0445 \u0430\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0439\u0441\u043a\u0438\u0445 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u2014 \u0438 \u0432\u0441\u0435\u0433\u043e \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u0435\u0447\u0435\u0440, \u0441 \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u043e\u043c \u043d\u0430 \u043a\u043e\u0444\u0435 \u0438 \u0431\u0443\u0431\u043b\u0438\u043a\u0438.<\/p>\n<p>  \u0410 \u044f \u2014 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u0441\u043c\u0435\u0448\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. <em>Angular, Knockout, React<\/em> \u2014 \u043e\u043d\u0438 \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u0438, \u043d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u2014 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u043b\u043e\u0436\u043d\u0430. \u0410 \u0432\u0435\u0434\u044c \u0435\u0441\u0442\u044c \u0438 \u00ab\u0433\u0438\u0431\u0440\u0438\u0434\u044b\u00bb, \u0433\u0434\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u0440\u043e\u0432 \u2014 \u043a\u0430\u043a <em>Ember<\/em> \u0438 <em>Knockout.Bootstrap<\/em>. \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 <em>jQuery<\/em> \u2014 \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u043a \u043d\u0435\u0439 \u0434\u0430\u0436\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439 \u043d\u0435\u0442; \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0442\u0430\u043a\u0438\u043c \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b\u0442\u044c JavaScript.<\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e, \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437\u0437\u0430\u0441\u0442\u0435\u043d\u0447\u0438\u0432\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0441 \u043c\u0435\u0447\u0442\u0430\u043c\u0438 \u0438 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u0434 \u00abi\u00bb. \u041c\u043d\u0435 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u00abnew &#038; popular\u00bb \u2014 \u0430 \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0448\u0435\u0448\u044c, \u0434\u0443\u0448\u0430 \u0442\u043e\u043c\u0438\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u2026 \u0430 \u0435\u0439 \u0440\u0430\u0437\u0432\u0435 \u043e\u0442\u043a\u0430\u0436\u0435\u0448\u044c? \u041e\u043d\u0430 \u0432\u0435\u0434\u044c \u043a\u0430\u043a \u0434\u0438\u0442\u044f \u043c\u0430\u043b\u043e\u0435.<\/p>\n<p>  \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d. \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0431\u0435\u0437 \u0444\u0430\u043d\u0442\u0438\u043a\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u041a\u0430\u043b\u0430\u0448\u043d\u0438\u043a\u043e\u0432\u0430, \u0438 \u043c\u043d\u043e\u0433\u043e\u0433\u0440\u0430\u043d\u043d\u044b\u0439, \u043a\u0430\u043a \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436, \u0433\u0434\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u2014 \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441, \u0441 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u043e\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043f\u043e\u0447\u0442\u0438 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0438\u0439 <em>Backbone.js<\/em>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 <em>Underscore.js<\/em> \u0438, \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, <em>jQuery\/Zepto<\/em>.<\/p>\n<p>  \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 Sqimitive.  <\/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-239149","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/239149","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=239149"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/239149\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=239149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=239149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=239149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}