{"id":216997,"date":"2014-11-18T17:49:04","date_gmt":"2014-11-18T13:49:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=216997"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=216997","title":{"rendered":"<span class=\"post_title\">\u0420\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 JavaScript. Core.js<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<blockquote><p>\u041e\u0434\u0438\u043d \u043f\u0430\u0446\u0430\u043d \u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0435 \u043d\u0430 JavaScript, \u0438 \u043a\u043b\u0438\u0435\u043d\u0442, \u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0447\u0442\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0443\u0434\u043e\u0431\u043d\u043e, \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u0442\u043e\u043c \u0435\u0433\u043e \u0432 \u0434\u0443\u0440\u043a\u0443 \u0437\u0430\u0431\u0440\u0430\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<br \/>  <i><b>\u2014 \u0421 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430<\/b><\/i><\/p><\/blockquote>\n<p>  \u041a \u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u044f? \u0417\u0430\u043d\u044f\u0442\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u2014 JavaScript. \u041e\u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e web \u0438 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u044b\u0445 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442.<\/p>\n<p>  JavaScript \u044d\u0442\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0438 <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D1%F2%E0%ED%E4%E0%F0%F2%ED%E0%FF_%E1%E8%E1%EB%E8%EE%F2%E5%EA%E0\">\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/a>, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0434\u0435\u0441\u044c \u0438 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c. \u041f\u043e\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b, \u043c\u0435\u0442\u043e\u0434\u044b, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0431\u0443\u0434\u044c \u0442\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f API, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0435 \u043d\u0430 JavaScript, \u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u043c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441 \u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439.<\/p>\n<p>  \u0412\u0430\u043d\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 JavaScript, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u0435\u043f\u043b\u043e\u0445\u0430. \u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 ECMA-262 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u2014 \u043e\u0442 3 \u0434\u043e \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 6. \u0427\u0430\u0441\u0442\u044c API \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, API \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 ECMA-402. \u041c\u043d\u043e\u0433\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c JavaScript, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>setTimeout<\/code>, \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a web-\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c. \u041a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u043e\u0432\u0441\u0435 \u2014 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u0435-\u0444\u0430\u043a\u0442\u043e.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u0443\u0436 \u043e\u043d\u0430 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u2014 \u0432\u0435\u0437\u0434\u0435 \u0440\u0430\u0437\u043d\u0430\u044f. \u0415\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 IE, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ES3 90-\u0431\u043e\u0440\u043e\u0434\u0430\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 <code>Array#forEach, Function#bind, Object.create<\/code> \u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0438 \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Node.js, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u0436\u0435 \u0432\u043e\u0432\u0441\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0433\u0440\u044f\u0434\u0443\u0449\u0435\u0433\u043e ES6.<\/p>\n<p>  \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043a\u0430\u043a \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0442\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0447\u0442\u043e (\u043f\u043e\u043a\u0430?) \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 <b><a href=\"https:\/\/github.com\/zloirock\/core-js\">core.js<\/a><\/b> \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0438\u0445 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 JavaScript. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0435\u0449\u0435 \u0438 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 \u043f\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 JavaScript \u0438 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043e \u0435\u0451 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445.<\/p>\n<h4><b>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0438\u043b\u0438 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435:<\/b><\/h4>\n<p>  <\/p>\n<ul>\n<li>\n<h5><a href=\"\/post\/216997\/#approach\">\u041f\u043e\u0434\u0445\u043e\u0434\u044b<\/a><\/h5>\n<\/li>\n<li>\n<h5><a href=\"\/post\/216997\/#I\">\u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f: \u041a\u043e\u0441\u0442\u044b\u043b\u0438<\/a><\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"\/post\/216997\/#es5\">ECMAScript 5<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6\">ECMAScript 6<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-symbol\">ECMAScript 6: \u0421\u0438\u043c\u0432\u043e\u043b\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-collections\">ECMAScript 6: \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-iterators\">ECMAScript 6: \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-promise\">ECMAScript 6: \u041e\u0431\u0435\u0449\u0430\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"\/post\/216997\/#array-generics\">Mozilla JavaScript: \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/a><\/li>\n<li><a href=\"\/post\/216997\/#schedule\">\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435: setTimeout, setInterval, setImmediate<\/a><\/li>\n<li><a href=\"\/post\/216997\/#console\">\u041a\u043e\u043d\u0441\u043e\u043b\u044c<\/a><\/li>\n<\/ul>\n<p>   <\/li>\n<li>\n<h5><a href=\"\/post\/216997\/#II\">\u0427\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f: \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b<\/a><\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"\/post\/216997\/#classify\">\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li>\n<li><a href=\"\/post\/216997\/#dict\">\u0421\u043b\u043e\u0432\u0430\u0440\u0438<\/a><\/li>\n<li><a href=\"\/post\/216997\/#partial-application\">\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"\/post\/216997\/#date-format\">\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#object\">\u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 API<\/a><\/li>\n<li><a href=\"\/post\/216997\/#array\">\u041c\u0430\u0441\u0441\u0438\u0432\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#num\">\u0427\u0438\u0441\u043b\u0430<\/a><\/li>\n<li><a href=\"\/post\/216997\/#escape\">\u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/a><\/li>\n<\/ul>\n<p>   <\/li>\n<li>\n<h5><a href=\"\/post\/216997\/#end\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/h5>\n<\/li>\n<\/ul>\n<p><a name=\"habracut\"><\/a><br \/>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e, \u043c\u043d\u043e\u0433\u0430\u0431\u0443\u043a\u0444 \u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0433\u043b\u0430\u0432\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b, \u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0451 \u2014 \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0448\u0435, \u043b\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0430\u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0430.<\/p>\n<p>  <a name=\"approach\"><\/a><\/p>\n<h2><b><a href=\"#approach\">#<\/a> \u041f\u043e\u0434\u0445\u043e\u0434\u044b<\/b><\/h2>\n<hr\/>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438, \u0432 JavaScript \u0442\u0440\u0438:<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 <b>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"http:\/\/en.wikipedia.org\/wiki\/Polyfill\">\u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u0432<\/a>, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430<\/b>. \u0416\u0435\u043b\u0435\u0437\u043e\u0431\u0435\u0442\u043e\u043d\u043d\u0430\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c API \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0430\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0435\u0451 \u0437\u043d\u0430\u043d\u0438\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e API \u044f\u0437\u044b\u043a\u0430. \u041e\u0431\u044b\u0447\u043d\u043e, \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u043e\u0434\u043d\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0438\u043b\u0438 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/es-shims\/es5-shim\"><b>es5-shim<\/b><\/a> \u0438\u043b\u0438 <a href=\"https:\/\/github.com\/paulmillr\/es6-shim\"><b>es6-shim<\/b><\/a>. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u0432. \u0418\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0447\u0430\u0441\u0442\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0447\u0430\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0441\u043e\u0442\u0435\u043d \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442. \u0414\u0430 \u0438 \u043d\u0435 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u043c\u0435\u0442\u044c, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u044b. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430, \u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f \u0431\u044b \u043d\u0435 \u0441\u0442\u0430\u043b.<\/p>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 <b>\u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d<\/b>. \u041b\u0438\u0431\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"http:\/\/underscorejs.org\/\"><b>Undescore<\/b><\/a> \u0438\u043b\u0438 \u0435\u0451 \u0444\u043e\u0440\u043a <a href=\"https:\/\/lodash.com\/\"><b>LoDash<\/b><\/a>. \u041e\u0431\u044b\u0447\u043d\u043e, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u0435\u043d, \u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442. \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>noConflict<\/code>, \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430, \u043b\u0443\u0447\u0448\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u0437\u0434\u0435\u0441\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a.<\/p>\n<p>  \u0422\u0440\u0435\u0442\u0438\u0439 \u2014 <b>\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c<\/b>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432 \u044d\u0442\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0440\u0443\u043b\u0438\u0442 <a href=\"http:\/\/sugarjs.com\/\"><b>Sugar<\/b><\/a>, \u0432 \u0441\u0432\u043e\u0451 \u0432\u0440\u0435\u043c\u044f \u2014 <a href=\"http:\/\/mootools.net\/\"><b>MooTools<\/b><\/a> \u0438 <a href=\"http:\/\/prototypejs.org\/\"><b>Prototype<\/b><\/a>. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u0417\u0434\u0435\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0430\u043c \u2014 \u043d\u043e \u0438\u0437 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u0432 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, <code>Function#bind<\/code> \u0438 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044f \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432. \u0427\u0442\u043e \u0436\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043b\u043e\u0445\u043e. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c, \u043d\u043e \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439. \u0412\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432, \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0435\u0439 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u0432, \u0430 \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b.<\/p>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u043c\u0435\u0442\u044c \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043a, \u043c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0442\u044f\u043d\u0443\u0442\u044c \u0441\u043e\u043b\u044f\u043d\u043a\u0443 \u0438\u0437 <i>Undescore \/ LoDash \/ Sugar + es5-shim, es6-shim, es6-symbol, setImmediate.js \/ asap, Moment.js \/ Intl.js, \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0443 \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/i>\u2026 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>  <a name=\"concept\"><\/a><b><a href=\"#concept\">#<\/a><\/b> \u041f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0432\u0437\u044f\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. <b>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f core.js \u0442\u0430\u043a\u043e\u0432\u0430<\/b>:<\/p>\n<ul>\n<li>\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439 \u0432 \u0441\u0435\u0431\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/li>\n<li>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u2014 \u043d\u0430\u0448\u0435 \u0432\u0441\u0451. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u2014 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0432\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u0434\u0435-\u0444\u0430\u043a\u0442\u043e, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439, \u043d\u043e \u0435\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d \u2014 \u0432\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u0437\u0430\u043c\u0435\u0449\u0430\u0435\u043c \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/li>\n<li>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0436\u0438\u043c\u0430\u0442\u044c\u0441\u044f.<\/li>\n<li>\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/li>\n<li>\u041f\u0438\u0448\u0438\u0442\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u0432\u044b \u0437\u0434\u0435\u0441\u044c \u0446\u0430\u0440\u044c \u0438 \u0431\u043e\u0433 \u0438 \u0438\u043c\u0435\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0443\u044e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u0431\u044b \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430.<\/li>\n<li>\u041f\u0438\u0448\u0438\u0442\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438\u043b\u0438 npm \u043c\u043e\u0434\u0443\u043b\u044c \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0443\u044e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0420\u0438\u0441\u043a\u0443\u0435\u0442\u0435 \u043e\u0431\u0440\u0435\u0447\u044c \u043d\u0430 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u043f\u0438\u0448\u0443\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u0435\u0437 \u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  <a name=\"example\"><\/a><b><a href=\"#example\">#<\/a><\/b> \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 <b>core.js<\/b> \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430:<\/p>\n<pre><code class=\"javascript\">console.log(Array.from(new Set([1, 2, 3, 2, 1]))); \/\/ =&gt; [1, 2, 3] console.log('*'.repeat(10));                       \/\/ =&gt; '**********' Promise.resolve(32).then(console.log);             \/\/ =&gt; 32 setImmediate(console.log, 42);                     \/\/ =&gt; 42 <\/code><\/pre>\n<p>  <a name=\"example-library\"><\/a><b><a href=\"#example-library\">#<\/a><\/b> \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>core<\/code>, \u043b\u0438\u0431\u043e \u0432 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>Promise<\/code> \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043a\u0430\u043a <code>core.Promise<\/code>, \u0430 \u043c\u0435\u0442\u043e\u0434 <code>Array.from<\/code> \u043a\u0430\u043a <code>core.Array.from<\/code>. \u041c\u0435\u0442\u043e\u0434\u044b, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445, \u0430 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>core.String.repeat<\/code> \u044d\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 <code>String.prototype.repeat<\/code>.<\/p>\n<pre><code class=\"javascript\">var log  = core.console.log; log(core.Array.from(new core.Set([1, 2, 3, 2, 1]))); \/\/ =&gt; [1, 2, 3] log(core.String.repeat('*', 10));                    \/\/ =&gt; '**********' core.Promise.resolve(32).then(log);                  \/\/ =&gt; 32 core.setImmediate(log, 42);                          \/\/ =&gt; 42 <\/code><\/pre>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f.<\/p>\n<p>  <a name=\"node\"><\/a><b><a href=\"#node\">#<\/a><\/b> \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0430 Node.js:<\/p>\n<pre><code class=\"javascript\">npm i core-js <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0441\u0431\u043e\u0440\u043e\u043a:<\/p>\n<pre><code class=\"javascript\">\/\/ \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430: require('core-js'); \/\/ \u0421\u0431\u043e\u0440\u043a\u0430 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432: var core = require('core-js\/library'); \/\/ \u0421\u0431\u043e\u0440\u043a\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b: require('core-js\/shim'); <\/code><\/pre>\n<p>  <a name=\"browser-builds\"><\/a><b><a href=\"#browser-builds\">#<\/a><\/b> <a href=\"https:\/\/github.com\/zloirock\/core-js\/tree\/master\/client\">\u0421\u0431\u043e\u0440\u043a\u0438 \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430<\/a>:<\/p>\n<ul>\n<li>\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f: <a href=\"https:\/\/raw.githubusercontent.com\/zloirock\/core-js\/master\/client\/core.js\">development<\/a>, <a href=\"https:\/\/raw.githubusercontent.com\/zloirock\/core-js\/master\/client\/core.min.js\">production<\/a> (21.8 \u043a\u0431 \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 gzip)<\/li>\n<li>\u0411\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432: <a href=\"https:\/\/raw.githubusercontent.com\/zloirock\/core-js\/master\/client\/library.js\">development<\/a>, <a href=\"https:\/\/raw.githubusercontent.com\/zloirock\/core-js\/master\/client\/library.min.js\">production<\/a> (21.8 \u043a\u0431 \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 gzip)<\/li>\n<li>\u0422\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b: <a href=\"https:\/\/raw.githubusercontent.com\/zloirock\/core-js\/master\/client\/shim.js\">development<\/a>, <a href=\"https:\/\/raw.githubusercontent.com\/zloirock\/core-js\/master\/client\/shim.min.js\">production<\/a> (16.7 \u043a\u0431 \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 gzip)<\/li>\n<\/ul>\n<p>  <a name=\"custom-builds\"><\/a><b><a href=\"#custom-builds\">#<\/a><\/b> \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u0431\u043e\u0440\u043e\u043a, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u044b, \u043f\u0440\u0438\u0442\u043e\u043c \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0430\u0432\u0438\u043c Node.js, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c grunt-cli, core-js \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c:<\/p>\n<pre><code class=\"javascript\">npm i -g grunt-cli npm i core-js cd node_modules\/core-js && npm i grunt build:date,console,library --path=custom uglify <\/code><\/pre>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0444\u0430\u0439\u043b\u044b <code>custom.js<\/code>, <code>custom.min.js<\/code> \u0432\u0435\u0441\u043e\u043c 4.8\u043a\u0431 \u0438 <code>custom.min.map<\/code>. \u0424\u043b\u0430\u0433 <code>library<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/github.com\/zloirock\/core-js#api\">\u0437\u0434\u0435\u0441\u044c<\/a> (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446).<\/p>\n<p>  <a name=\"I\"><\/a><\/p>\n<h1><b><a href=\"#I\">#<\/a> \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f: \u041a\u043e\u0441\u0442\u044b\u043b\u0438<\/b><\/h1>\n<hr\/>\n<p>\u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043f\u043e\u0434 \u043a\u043e\u0441\u0442\u044b\u043b\u044f\u043c\u0438, \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435. \u0418\u0442\u0430\u043a, \u043f\u043e\u0435\u0445\u0430\u043b\u0438:<\/p>\n<p>  <a name=\"es5\"><\/a><\/p>\n<h2><b><a href=\"#es5\">#<\/a> ECMAScript 5<\/b><\/h2>\n<hr\/>\n<p>  \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 ECMAScript 5 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443. \u0412\u044b\u043c\u0435\u0440\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0435 ES5. \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0445 IE. \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440, \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u044f\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 IE8, \u0430 \u0432 \u0441\u0430\u043c\u044b\u0445 \u0443\u043f\u043e\u0440\u043e\u0442\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0434\u0430\u0436\u0435 IE6. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f. \u0421\u0430\u043c\u044b\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u043c ES5 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/es-shims\/es5-shim\">\u044d\u0442\u043e\u0442 es5-shim<\/a>, \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 Sugar, MooTools, Prototype, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c. \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043d\u043e\u0432\u0438\u043d\u043a\u0430, \u043e\u0431\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u2014 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u0434 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 IE8-, \u043d\u0438 \u043e \u043a\u0430\u043a\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0440\u0435\u0447\u0438.<\/p>\n<p>  <a name=\"es5-array\"><\/a><\/p>\n<h4><b><a href=\"#es5-array\">#<\/a> \u041c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/b><\/h4>\n<p>  <a name=\"es5-array-proto\"><\/a><b><a href=\"#es5-array-proto\">#<\/a><\/b> \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u042d\u0442\u043e \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435:<\/p>\n<p>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/indexOf\">Array#indexOf<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0440\u0430\u0432\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0438\u043b\u0438 <code>-1<\/code>, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/lastIndexOf\">Array#lastIndexOf<\/a> \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443, \u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/forEach\">Array#forEach<\/a> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/map\">Array#map<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/filter\">Array#filter<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/every\">Array#every<\/a> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043a\u0430\u0436\u0434\u044b\u0439 \u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/some\">Array#some<\/a> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0435\u0441\u0442\u044c \u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0439 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/Reduce\">Array#reduce<\/a> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u0435\u0440\u0442\u043a\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u043b\u0435\u0432\u0430 \u2014 \u043d\u0430\u043f\u0440\u0430\u0432\u043e.<br \/>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/ReduceRight\">Array#reduceRight<\/a> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u0435\u0440\u0442\u043a\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u043d\u0430\u043b\u0435\u0432\u043e.<\/p>\n<pre><code class=\"javascript\">[1, 2, 3, 2, 1].indexOf(2);     \/\/ =&gt; 1 [1, 2, 3, 2, 1].lastIndexOf(2); \/\/ =&gt; 3 [1, 2, 3].forEach(function(val, key){   console.log(val);             \/\/ =&gt; 1, 2, 3   console.log(key);             \/\/ =&gt; 0, 1, 2 }); [1, 2, 3].map(function(it){   return it * it; });                             \/\/ =&gt; [1, 4, 9] [1, 2, 3].filter(function(it){   return it % 2; });                             \/\/ =&gt; [1, 3] function isNum(it){   return typeof it == 'number'; } [1, '2', 3].every(isNum);       \/\/ =&gt; false [1, '2', 3].some(isNum);        \/\/ =&gt; true function add(a, b){   return a + b; } [1, 2, 3].reduce(add);          \/\/ =&gt; 6 [1, 2, 3].reduceRight(add, ''); \/\/ =&gt; '321' <\/code><\/pre>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c. \u041c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%CE%E1%EE%E1%F9%B8%ED%ED%EE%E5_%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5\">\u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438<\/a> \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u043e \u0438 \u043b\u044e\u0431\u043e\u0433\u043e array-like \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c <a href=\"#array-generics\"># \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435<\/a>. \u0422\u0430\u043a \u0432\u043e\u0442, \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 ES5 \u0441\u0442\u0440\u043e\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f array-like \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0431\u0443\u043a\u0432\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>'string'[2] \/\/ =&gt; 'r'<\/code>, \u0430 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 IE \u0442\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u043e\u043d\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0442\u0440\u043e\u043a, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u043c \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 IE <code>Array#slice<\/code> \u0438 <code>Array#join<\/code>.<\/p>\n<pre><code class=\"javascript\">Array.prototype.map.call('123', function(it){   return it * it; });                                    \/\/ =&gt; [1, 4, 9] Array.prototype.slice.call('qwe', 1);  \/\/ =&gt; ['w', 'e'] Array.prototype.join.call('qwe', '|'); \/\/ =&gt; 'q|w|e' <\/code><\/pre>\n<p>  \u041d\u0443 \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u0434\u0440\u0435\u0432\u043d\u044e\u044e \u0438\u0441\u0442\u0438\u043d\u0443: <b>\u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0435 \u043c\u0430\u0441\u0441\u0438\u0432 \u0446\u0438\u043a\u043b\u043e\u043c <code>for-in<\/code><\/b>. \u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u043d\u043e \u0438 \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 IE8-, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043a\u043b\u044e\u0447 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u2014 \u0438\u043d\u0430\u0447\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043e\u0431\u0445\u043e\u0434 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u043e \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \ud83d\ude42<\/p>\n<p>  <a name=\"es5-is-array\"><\/a><b><a href=\"#es5-is-array\">#<\/a><\/b> \u041a \u044d\u0442\u043e\u0439 \u0436\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/isArray\">Array.isArray<\/a>. \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u043d\u0435 \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432, \u0430 \u043f\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443. \u041f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e. \u041e \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c <a href=\"#classof\"># \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439, \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043d\u043e\u0439, \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>.<\/p>\n<pre><code class=\"javascript\">Array.isArray([1, 2, 3]);                      \/\/ =&gt; true Array.isArray(Object.create(Array.prototype)); \/\/ =&gt; false <\/code><\/pre>\n<p>  <a name=\"es5-object\"><\/a><\/p>\n<h4><b><a href=\"#es5-object\">#<\/a> \u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 API<\/b><\/h4>\n<p>  \u041f\u043e\u043b\u043d\u0430\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0433\u043e API ECMAScript 5 \u043d\u0430 \u0431\u0430\u0437\u0435 ECMAScript 3 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445. ES5 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 API \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \/ \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435), \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438.<\/p>\n<p>  <a name=\"es5-create\"><\/a><a href=\"#es5-create\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/create\">Object.create<\/a> \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0432 <code>null<\/code>, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 ECMAScript 3 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0442\u044b\u0439 \u0442\u0440\u044d\u0448 \u043d\u0430 \u0431\u0430\u0437\u0435 <code>iframe<\/code>. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u043e <a href=\"#dict\"># \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a>. \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 <a href=\"#es5-desc\"># \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432<\/a>, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <code>Object.defineProperties<\/code>.<\/p>\n<pre><code class=\"javascript\">function Parent(\/*...*\/){ \/*...*\/ } Parent.prototype = {constructor: Parent \/*, ... *\/} function Child(\/*...*\/){   Parent.call(this \/*, ...*\/);   \/\/ ... } \/\/ \u0411\u044b\u043b\u043e \u0432 ES3 (\u043d\u0443\u0442\u0440\u044f\u043d\u043a\u0430 \u0432\u0441\u044f\u043a\u0438\u0445 inherit \u0438 extend'\u043e\u0432): function Tmp(){} Tmp.prototype = Parent.prototype; Child.prototype = new Tmp; Child.prototype.constructor = Child; \/\/ \u0421\u0442\u0430\u043b\u043e \u0441 ES5: Child.prototype = Object.create(Parent.prototype, {constructor: {value: Child}});  var dict = Object.create(null); dict.key = 42; console.log(dict instanceof Object); \/\/ =&gt; false console.log(dict.toString)           \/\/ =&gt; undefined console.log(dict.key)                \/\/ =&gt; 42 <\/code><\/pre>\n<p>  <a name=\"es5-getPrototypeOf\"><\/a><a href=\"#es5-getPrototypeOf\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/getPrototypeOf\">Object.getPrototypeOf<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0412 ECMAScript 3 \u043d\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>constructor<\/code>, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c \u0431\u0443\u0434\u0435\u0442 <code>constructor.prototype<\/code>. \u0414\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 <code>Object.create<\/code>, \u0434\u043e\u0431\u0430\u0432\u0438\u043c <a href=\"#es6-symbol\"># \u0441\u0438\u043c\u0432\u043e\u043b<\/a>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f, \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438 <a href=\"#es5-keys\"># \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043a\u043b\u044e\u0447\u0435\u0439<\/a>. \u041d\u043e \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>constructor<\/code>, <code>Object.getPrototypeOf<\/code> \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<pre><code class=\"javascript\">var parent = {foo: 'bar'}   , child  = Object.create(parent); console.log(Object.getPrototypeOf(child) === parent);      \/\/ =&gt; true  function F(){} console.log(Object.getPrototypeOf(new F) === F.prototype); \/\/ =&gt; true  F.prototype = {constructor: F \/*, ...*\/}; console.log(Object.getPrototypeOf(new F) === F.prototype); \/\/ =&gt; true  F.prototype = {}; console.log(Object.getPrototypeOf(new F) === F.prototype); \/\/ \u0412 IE8- \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e <\/code><\/pre>\n<p>  <a name=\"es5-keys\"><\/a><a href=\"#es5-keys\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/keys\">Object.keys<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/getOwnPropertyNames\">Object.getOwnPropertyNames<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0432 \u0442.\u0447. \u0438 \u043d\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0445. \u0421 <code>Object.keys<\/code>, \u0432\u0440\u043e\u0434\u0435, \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 <code>for-in<\/code> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug\">\u0431\u0430\u0433 \u0441 \u00ab\u043d\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u043c\u0438\u00bb \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/a> \u0432 IE. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0430\u043a\u043e\u0432\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 <code>Object.getOwnPropertyNames<\/code>.<\/p>\n<pre><code class=\"javascript\">console.log(Object.keys({q: 1, w: 2, e: 3}));       \/\/ =&gt; ['q', 'w', 'e'] console.log(Object.keys([1, 2, 3]));                \/\/ =&gt; ['0', '1', '2'] console.log(Object.getOwnPropertyNames([1, 2, 3])); \/\/ =&gt; ['0', '1', '2', 'length'] <\/code><\/pre>\n<p>  <a name=\"es5-desc\"><\/a><a href=\"#es5-desc\"><b>#<\/b><\/a> \u0421 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438 \u0432\u0441\u0451 \u043f\u043b\u043e\u0445\u043e, ECMAScript 3 \u0438\u0445 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u0417\u0430\u0434\u0430\u0442\u044c \u0433\u0435\u0442\u0442\u0435\u0440\u044b \/ \u0441\u0435\u0442\u0442\u0435\u0440\u044b \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c <code>Object#__define[GS]etter__<\/code>, \u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>Object.defineProperty<\/code>, \u0434\u0430\u0432\u043d\u043e \u0432\u044b\u043c\u0435\u0440\u043b\u0438. \u0412 \u0441\u0442\u0430\u0440\u044b\u0445 IE \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0433\u0435\u0442\u0442\u0435\u0440\u0430\u043c\u0438 \/ \u0441\u0435\u0442\u0442\u0435\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/habrahabr.ru\/post\/75158\/\">\u0438\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441 VBScript<\/a>, \u043d\u043e \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u043c\u0430. <code>enumerable: false<\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0435\u0441\u0442\u044c, \u0438\u0445 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c, \u043d\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u043d\u043e \u0442\u0430\u043a\u043e\u0432\u044b\u043c, \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/propertyIsEnumerable\">Object#propertyIsEnumerable<\/a>. \u0412 IE8 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0431\u044b \u0438\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e (\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 DOM \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438). \u0418\u0442\u043e\u0433\u043e, \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f IE8- \u2014 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e <code>value<\/code> \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u0432 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/defineProperty\">Object.defineProperty<\/a> \u0438 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/defineProperties\">Object.defineProperties<\/a> \u0434\u0430 \u0447\u0435\u0441\u0442\u043d\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 <code>value<\/code> \u0438 <code>enumerable<\/code> \u0432 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/getOwnPropertyDescriptor\">Object.getOwnPropertyDescriptor<\/a>.<\/p>\n<p>  <a name=\"es5-freeze\"><\/a><a href=\"#es5-freeze\"><b>#<\/b><\/a> \u0410 \u0447\u0442\u043e \u043d\u0430\u0441\u0447\u0435\u0442 <code>Object.freeze, Object.preventExtensions, Object.seal<\/code>? \u041c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u0445 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438, \u043d\u043e \u0435\u0441\u0442\u044c \u0438 \u0442\u0430\u043a\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0437\u0440\u0435\u043d\u0438\u044f:  <\/p>\n<blockquote><p><b>Object.freeze, Object.preventExtensions, Object.seal, with, eval<\/b><br \/>  Crazy shit that you will probably never need. Stay away from it.<br \/>  <i><b><a href=\"http:\/\/nodeguide.com\/style.html#object.freeze-object.preventextensions-object.seal-with-eval\">\u2014 Felix Geisend\u00f6rfer<\/a><\/b><\/i>  <\/p><\/blockquote>\n<p>\u0418 \u044f \u0441 \u043d\u0435\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0431\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u0431\u0435\u0437 \u043d\u0438\u0445.<\/p>\n<p>  <a name=\"es5-other\"><\/a><\/p>\n<h4><b><a href=\"#es5-other\">#<\/a> \u041f\u0440\u043e\u0447\u0435\u0435<\/b><\/h4>\n<p>  <a name=\"es5-bind\"><\/a><a href=\"#es5-bind\"><b>#<\/b><\/a> \u0412 ECMAScript 5 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Function\/bind\">Function#bind<\/a>. \u041c\u0435\u0442\u043e\u0434 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0432 JavaScript \u043e\u0434\u043d\u043e\u0433\u043e \u0435\u0433\u043e \u043c\u0430\u043b\u043e, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0442\u0435\u043c\u0430 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 <a href=\"#partial-application\"># \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435<\/a>.<\/p>\n<pre><code class=\"javascript\">var fn = console.log.bind(console, 42); fn(43); \/\/ =&gt; 42 43 <\/code><\/pre>\n<p>  <a name=\"es5-now\"><\/a><a href=\"#es5-now\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/now\">Date.now<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <code>+new Date<\/code>.<\/p>\n<pre><code class=\"javascript\">Date.now(); \/\/ =&gt; 1400263401642 <\/code><\/pre>\n<p>  <a name=\"es5-trim\"><\/a><a href=\"#es5-trim\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/Trim\">String#trim<\/a> \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<pre><code class=\"javascript\">'\\n   \u0441\u0442\u0440\u043e\u043a\u0430   \\n'.trim(); \/\/ =&gt; '\u0441\u0442\u0440\u043e\u043a\u0430' <\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0436\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u044f <code>JSON<\/code>, \u0442\u043e \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f IE8 \u0438, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u044f \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u0434\u043e\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 IE \u2014 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/douglascrockford\/JSON-js\">\u044d\u0442\u043e\u0442<\/a> \u043f\u043e\u043b\u0438\u0444\u0438\u043b.<\/p>\n<p>  <a name=\"es6\"><\/a><\/p>\n<h2><b><a href=\"#es6\">#<\/a> ECMAScript 6<\/b><\/h2>\n<hr\/>\n<p>  \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f ECMAScript 5 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u0441\u043f\u0435\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 ECMAScript 4 \u0438 \u043c\u0430\u043b\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u043b\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0443\u044e \u0435\u0449\u0451 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0442\u044b\u0441\u044f\u0447\u0435\u043b\u0435\u0442\u0438\u0438 ECMAScript 3. \u0421\u0435\u0439\u0447\u0430\u0441 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0430\u044f \u044f\u0437\u044b\u043a, \u0432 \u0442.\u0447. \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f ECMAScript 6. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0444\u0438\u0447 \u0432 \u043d\u0435\u0451 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043e, \u0432\u0441\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0434\u0443\u0442 \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e ECMAScript 7, \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a. \u0422\u0430\u043a \u0447\u0442\u043e \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043d\u0430 ES6.<\/p>\n<p>  \u0427\u0442\u043e \u0441 \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u0430\u0445 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u043e \u043f\u043e <a href=\"http:\/\/kangax.github.io\/compat-table\/es6\/\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435<\/a>.<\/p>\n<ul>\n<li>\u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0445 \u0441 \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0443 <b>Firefox<\/b> \u2014 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0435.<\/li>\n<li><a name=\"v8-harmony-mode\"><\/a><a href=\"#v8-harmony-mode\"><b>#<\/b><\/a> \u0412 <b>v8 (Chrome, Opera, Node.js)<\/b> \u0442\u043e\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e\u0435, \u043d\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0434\u043b\u044f \u0438\u0445 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u043b\u0430\u0436\u043e\u043a \u00ab\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 JavaScript\u00bb (\u043f\u0430\u0440\u0441\u0435\u0440 \u0441\u044a\u0435\u0434\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 <code>chrome:\/\/flags\/#enable-javascript-harmony<\/code>), \u0430 Node.js \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u0444\u043b\u0430\u0436\u043a\u043e\u043c <code>--harmony<\/code>. \u0427\u0442\u043e-\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u0431\u0435\u0437 \u0444\u043b\u0430\u0436\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Promise<\/code>, <code>WeakMap<\/code> \u0438 <code>WeakSet<\/code>, \u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Chrome 38 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438 <code>Symbol<\/code>, <code>Map<\/code>, <code>Set<\/code>, \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b. Node.js \u0432 \u044d\u0442\u043e\u043c \u043f\u043b\u0430\u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u0441\u0442\u0430\u0451\u0442, \u0442\u0430\u043a \u043a\u0430\u043a, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0435, v8 \u0442\u0430\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e. \u0417\u0430\u0442\u043e \u0435\u0451, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432\u0430\u043c \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u0444\u043b\u0430\u0436\u043a\u043e\u043c.<\/li>\n<li>\u0423 <b>IE<\/b>, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0432\u0441\u0451 \u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u0432 11\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u0435\u0449\u0435 \u043f\u0430\u0440\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u0412 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043e\u0431\u0435\u0449\u0430\u044e\u0442 <a href=\"http:\/\/habrahabr.ru\/company\/microsoft\/blog\/243215\/\">\u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0435<\/a>.<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b ES6 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0438 \u0432 <b>Safari<\/b>. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438, \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0431\u044b \u0438 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438. \u041f\u043e <a href=\"https:\/\/esdiscuss.org\/topic\/safari-8-es6-ish-implementation\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/li>\n<\/ul>\n<p>  \u0421\u0430\u043c\u044b\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u043c ES6 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/paulmillr\/es6-shim\/\">es6-shim<\/a> \u043e\u0442 <a href=\"http:\/\/habrahabr.ru\/users\/paulmillr\/\" class=\"user_link\">paulmillr<\/a>.<\/p>\n<p>  \u0427\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ECMAScript 6, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Proxy<\/code> (\u0430 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0432\u043a\u0443\u0441\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439), \u043d\u0430 \u0431\u0430\u0437\u0435 ECMAScript 5 \u0438 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 ECMAScript 3 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0438 \u00ab\u043d\u0435\u0447\u0435\u0441\u0442\u043d\u043e\u00bb.<\/p>\n<p>  <a name=\"preprocessors\"><\/a><\/p>\n<h4><b><a href=\"#preprocessors\">#<\/a> \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b ECMAScript 6+<\/b><\/h4>\n<p>  \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0442\u043e, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0442\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 ECMAScript 6+ \u0432 ECMAScript 3 \u0438\u043b\u0438 5. \u0418\u0445 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0443 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u2014 <b><a href=\"https:\/\/github.com\/google\/traceur-compiler\">Google Traceur<\/a><\/b>. \u041e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u044b\u0439 runtime, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f.<\/p>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u2014 <b><a href=\"https:\/\/github.com\/6to5\/6to5\">6to5<\/a><\/b>. \u041f\u0440\u043e\u0435\u043a\u0442 \u0441\u0432\u0435\u0436\u0438\u0439 \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f <b>\u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435<\/b> \u0431\u044b\u0441\u0442\u0440\u043e. \u041e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 runtime, \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u2014 runtime <b><a href=\"http:\/\/facebook.github.io\/regenerator\/\">regenerator<\/a><\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0417\u0430\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ES6 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"#es6-iterable-interface\"># <code>Symbol.iterator<\/code><\/a>. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 <a href=\"https:\/\/github.com\/paulmillr\/es6-shim\">es6-shim<\/a> \u0438 <a href=\"https:\/\/github.com\/medikoo\/es6-symbol\">es6-symbol<\/a>. \u0418\u0445 \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0435\u0451 \u043f\u0430\u0440\u043e\u0439. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043a\u043e\u0434 \u0432 ECMAScript 5, \u043d\u043e, \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u2014 \u0441 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432\u0440\u043e\u0434\u0435 <a href=\"#es5-desc\"># <code>Object.defineProperties<\/code><\/a> \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 IE.<\/p>\n<p>  <b>\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ECMAScript 6 \u043d\u0430 \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u0430\u0442\u0443\u0448\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441.<\/b> \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u043b\u043e\u0447\u0435\u0439.<\/p>\n<p>  \u041d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u0441\u043e\u0432\u0441\u0435\u043c <b>\u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e <a href=\"http:\/\/es6.zloirock.ru\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443<\/a><\/b> \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 ES6 \u0447\u0435\u0440\u0435\u0437 <b>6to5<\/b> \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 <b>core.js<\/b>, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u0435\u0451. \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430 \u043a \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0443 ECMAScript 6, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 ECMAScript 5.<\/p>\n<hr\/>\n<p>  \u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e ECMAScript 6. \u041d\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0433\u043b\u0430\u0432\u0430\u0445, \u044d\u0442\u043e <a href=\"#es6-symbol\"># \u0441\u0438\u043c\u0432\u043e\u043b\u044b<\/a>, <a href=\"#es6-collections\"># \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/a>, <a href=\"#es6-iterators\"># \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/a> \u0438 <a href=\"#es6-promise\"># \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f<\/a>, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0437\u0434\u0435\u0441\u044c.<\/p>\n<p>  <a name=\"es6-object-assign\"><\/a><\/p>\n<h4><b><a href=\"#es6-object-assign\">#<\/a> Object.assign<\/b><\/h4>\n<p>  \u042d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0436\u0434\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u0438\u0435. <a href=\"http:\/\/people.mozilla.org\/~jorendorff\/es6-draft.html#sec-object.assign\">Object.assign<\/a> \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432) \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. <a href=\"http:\/\/goo.gl\/H3zj4b\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var foo = {q: 1, w: 2}   , bar = {e: 3, r: 4}   , baz = {t: 5, y: 6}; Object.assign(foo, bar, baz); \/\/ =&gt; foo = {q: 1, w: 2, e: 3, r: 4, t: 5, y: 6} <\/code><\/pre>\n<p>  \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>Object.mixin<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0435\u0449\u0435 \u0438 \u043d\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u043b \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>super<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c. \u0415\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433 \u0435\u0441\u0442\u044c \u0432 <a href=\"#object-define\"># \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<p>  <a name=\"es6-object-is\"><\/a><\/p>\n<h4><b><a href=\"#es6-object-is\">#<\/a> Object.is<\/b><\/h4>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 JavaScript \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0441\u0435\u0431\u044f \u0432\u0435\u0434\u0443\u0442. \u0417\u0430\u0431\u0443\u0434\u0435\u043c \u0434\u0430\u0436\u0435 \u0442\u0430\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043a\u0430\u043a <code>==<\/code> \u0441 \u0435\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 <code>===<\/code>:<\/p>\n<pre><code class=\"javascript\">NaN === NaN  \/\/ =&gt; false 0 === -0     \/\/ =&gt; true, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c: 1\/0 === 1\/-0 \/\/ =&gt; false <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f, \u0432 \u044f\u0437\u044b\u043a\u0435 \u0435\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f <a href=\"http:\/\/es5.javascript.ru\/x9.html#x9.12\">SameValue<\/a>. \u0414\u043b\u044f \u043d\u0435\u0433\u043e <code>NaN<\/code> \u0440\u0430\u0432\u0435\u043d <code>NaN<\/code>, \u0430 <code>+0<\/code> \u0438 <code>-0<\/code> \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b. \u0412 ECMAScript 6 \u0435\u0433\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043d\u0430\u0440\u0443\u0436\u0443 \u043a\u0430\u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b <code>is<\/code> \u0438 <code>isnt<\/code>, \u043d\u043e, \u043f\u043e\u0445\u043e\u0436\u0435, \u043f\u043e\u043d\u044f\u0432, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 \u0443\u0436\u0435 \u0438 \u0442\u0430\u043a \u043d\u0435 \u043c\u0430\u043b\u043e, \u0434\u0430 \u0438 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u044b\u043d\u0435\u0441\u043b\u0438 \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/is\">Object.is<\/a>. <a href=\"http:\/\/goo.gl\/XMplwh\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">Object.is(NaN, NaN); \/\/ =&gt; true Object.is(0, -0);    \/\/ =&gt; false Object.is(42, 42);   \/\/ =&gt; true, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e '===' Object.is(42, '42'); \/\/ =&gt; false, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e '===' <\/code><\/pre>\n<p>  <a name=\"same-value-zero\"><\/a><a href=\"#same-value-zero\">#<\/a> \u0422\u0430\u043a\u0436\u0435 \u0432 ES6 \u0438 \u0434\u0430\u043b\u0435\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u2014 <a href=\"http:\/\/people.mozilla.org\/~jorendorff\/es6-draft.html#sec-samevaluezero\">SameValueZero<\/a>, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <code>NaN<\/code> \u0440\u0430\u0432\u0435\u043d <code>NaN<\/code>, \u0438, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, <code>-0<\/code> \u0440\u0430\u0432\u0435\u043d <code>+0<\/code>. \u0418\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0430 <a href=\"#es6-collections\"># \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/a>, \u043e\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 <a href=\"#array-contains\"># <code>Array#contains<\/code><\/a>.<\/p>\n<p>  <a name=\"es6-object-setPrototypeOf\"><\/a><\/p>\n<h4><b><a href=\"#es6-object-setPrototypeOf\">#<\/a> Object.setPrototypeOf<\/b><\/h4>\n<p>  \u0412 ES6 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>Object.setPrototypeOf<\/code>. <a href=\"http:\/\/goo.gl\/t4wJ4K\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">function Parent(){} function Child(){} Object.setPrototypeOf(Child.prototype, Parent.prototype); new Child instanceof Child;  \/\/ =&gt; true new Child instanceof Parent; \/\/ =&gt; true  function fn(){} Object.setPrototypeOf(fn, []); typeof fn == 'function';     \/\/ =&gt; true  fn instanceof Array;         \/\/ =&gt; true  var object = {}; Object.setPrototypeOf(object, null); object instanceof Object;    \/\/ =&gt; false <\/code><\/pre>\n<p>  \u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u0430\u044f, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043d\u0443\u044e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u044f\u0437\u044b\u043a\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u2014 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u0445\u043e\u0442\u044f \u0431\u044b, \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 ECMAScript 5. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0431\u0435\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>__proto__<\/code>. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043e\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u043c\u0438, \u043a\u0440\u043e\u043c\u0435 IE10-, \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0433\u0435\u0442\u0442\u0435\u0440 \/ \u0441\u0435\u0442\u0442\u0435\u0440 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 <code>Object<\/code>.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0432\u0435\u0440\u0441\u0438\u044f <code>Object.setPrototypeOf<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0432\u044b\u0434\u0435\u0440\u043d\u0435\u043c \u0441\u0435\u0442\u0442\u0435\u0440 <code>__proto__<\/code> \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0438\u0437 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<pre><code class=\"javascript\">var setPrototypeOf = Function.call.bind(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set); <\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445, \u043d\u043e \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445, \u0432\u0435\u0440\u0441\u0438\u044f\u0445 v8, \u0441\u0435\u0442\u0442\u0435\u0440 <code>__proto__<\/code> \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>Object.setPrototypeOf<\/code> \u0432 \u043d\u0438\u0445 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u043a\u043b\u044e\u0447\u0443 <code>__proto__<\/code>.<\/p>\n<h5>\u0422\u0430\u043a \u0438 \u0436\u0438\u0432\u0435\u043c:<\/h5>\n<p>  <\/p>\n<ul>\n<li><b>\u0414\u043b\u044f IE10- \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f <code>Object.setPrototypeOf<\/code> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430.<\/b><\/li>\n<li>\u0412 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 v8 <code>Object.setPrototypeOf<\/code> \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u0446\u0435\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>Object.prototype<\/code> \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>__proto__<\/code> \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0447\u0435\u0440\u0435\u0437, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Object.defineProperty<\/code>.<\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a\u0436\u0435, ECMAScript 6 \u0438 \u043d\u0430\u0448\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b <code>Object#toString<\/code>. \u0422\u0435\u043c\u0430 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f, \u043d\u043e \u043e \u043d\u0435\u0439 \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c <a href=\"#classof\"># \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>.<\/p>\n<p>  <a name=\"es6-array\"><\/a><\/p>\n<h4><b><a href=\"#es6-array\">#<\/a> \u041c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/b><\/h4>\n<p>  \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b <code>Array.from<\/code> \u0438 <code>Array.of<\/code> \u2014 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043e\u0442 <code>Array<\/code>, \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0435\u0451 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439 \u2014 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"http:\/\/www.2ality.com\/2014\/05\/es6-array-methods.html\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e \u043d\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/a>.<\/p>\n<p>  <a name=\"es6-array-from\"><\/a><a href=\"#es6-array-from\"><b>#<\/b><\/a> ECMAScript 6 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u2014 <code>Array.from<\/code>. \u042d\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443 <a href=\"#es6-iterators\"># \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445<\/a> \u0438 array-like \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0412\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u043d \u0437\u0430\u043c\u0435\u043d\u0438\u0442 <code>Array.prototype.slice.call<\/code> \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0439. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 map-\u043a\u043e\u043b\u043b\u0431\u044d\u043a \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0431\u0435\u0437 map-\u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <a href=\"#es6-spread\"># spread<\/a> \u0432 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u2014 <code>[...iterable]<\/code>. <a href=\"http:\/\/goo.gl\/h1F9dN\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">Array.from(new Set([1, 2, 3, 2, 1]));      \/\/ =&gt; [1, 2, 3] Array.from({0: 1, 1: 2, 2: 3, length: 3}); \/\/ =&gt; [1, 2, 3] Array.from('123', Number);                 \/\/ =&gt; [1, 2, 3] Array.from('123', function(it){   return it * it; });                                        \/\/ =&gt; [1, 4, 9] <\/code><\/pre>\n<p>  <a name=\"es6-array-of\"><\/a><a href=\"#es6-array-of\"><b>#<\/b><\/a> \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/of\">Array.of<\/a> \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d. \u041e\u043d \u043d\u0443\u0436\u0435\u043d, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u043e\u0432 <code>Array<\/code>, \u043a\u0430\u043a \u0430\u043d\u0430\u043b\u043e\u0433 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <code>[]<\/code>. <a href=\"http:\/\/goo.gl\/BV1EDC\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">Array.of(1);       \/\/ =&gt; [1] Array.of(1, 2, 3); \/\/ =&gt; [1, 2, 3] <\/code><\/pre>\n<p>  <a name=\"es6-array-find\"><\/a><a href=\"#es6-array-find\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434\u044b <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/find\">Array#find<\/a> \u0438 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/findIndex\">Array#findIndex<\/a> \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430. <a href=\"http:\/\/goo.gl\/Gb8ILU\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">function isOdd(val){   return val % 2; } [4, 8, 15, 16, 23, 42].find(isOdd);      \/\/ =&gt; 15 [4, 8, 15, 16, 23, 42].findIndex(isOdd); \/\/ =&gt; 2 [4, 8, 15, 16, 23, 42].find(isNaN);      \/\/ =&gt; undefined [4, 8, 15, 16, 23, 42].findIndex(isNaN); \/\/ =&gt; -1 <\/code><\/pre>\n<p>  <a name=\"es6-array-fill\"><\/a><a href=\"#es6-array-fill\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/fill\">Array#fill<\/a> \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u2014 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438. <a href=\"http:\/\/goo.gl\/34utph\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">Array(5).map(function(){   return 42; });                \/\/ =&gt; [undefined \u00d7 5], \u043f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a .map \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 &quot;\u0434\u044b\u0440\u043a\u0438&quot; \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 Array(5).fill(42); \/\/ =&gt; [42, 42, 42, 42, 42] <\/code><\/pre>\n<p>  <a name=\"es6-string\"><\/a><\/p>\n<h4><b><a href=\"#es6-string\">#<\/a> \u041c\u0435\u0442\u043e\u0434\u044b \u0441\u0442\u0440\u043e\u043a\u0438<\/b><\/h4>\n<p>  \u0422\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/contains\">String#contains<\/a> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443. <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/startsWith\">String#startsWith<\/a> \u0438 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/endsWith\">String#endsWith<\/a> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0438\u043b\u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443. \u042d\u0442\u0438 3 \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e. <a href=\"http:\/\/goo.gl\/j05jWf\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">'foobarbaz'.contains('bar');      \/\/ =&gt; true 'foobarbaz'.contains('bar', 4);   \/\/ =&gt; false 'foobarbaz'.startsWith('foo');    \/\/ =&gt; true 'foobarbaz'.startsWith('bar', 3); \/\/ =&gt; true 'foobarbaz'.endsWith('baz');      \/\/ =&gt; true 'foobarbaz'.endsWith('bar', 6);   \/\/ =&gt; true <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/repeat\">String#repeat<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0440\u0430\u0437. <a href=\"http:\/\/goo.gl\/UBdYnv\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">'string'.repeat(3); \/\/ =&gt; 'stringstringstring' <\/code><\/pre>\n<p>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b ECMAScript 6 \/ 7 <a href=\"https:\/\/github.com\/lukehoban\/es6features#unicode\">\u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/a> \u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0439 <a href=\"#es6-iterators\"># \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440<\/a> \u0441\u0442\u0440\u043e\u043a\u0438, \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0421\u0435\u0439\u0447\u0430\u0441 \u0438\u0445 \u043d\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d\u0438 \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. \u0411\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/p>\n<p>  <a name=\"es6-math\"><\/a><\/p>\n<h4><b><a href=\"#es6-math\">#<\/a> \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438<\/b><\/h4>\n<p>  \u0412 ECMAScript 6 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u041e\u0431\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u0431\u0435\u0437 \u0438\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u043a\u0438: <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Number\/EPSILON\">Number.EPSILON<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Number\/parseFloat\">Number.parseFloat<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Number\/parseInt\">Number.parseInt<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Number\/isFinite\">Number.isFinite<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Number\/isInteger\">Number.isInteger<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Number\/isNaN\">Number.isNaN<\/a>, <a href=\"http:\/\/www.2ality.com\/2013\/10\/safe-integers.html\">Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.isSafeInteger<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/acosh\">Math.acosh<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/asinh\">Math.asinh<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/atanh\">Math.atanh<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/cbrt\">Math.cbrt<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/clz32\">Math.clz32<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/cosh\">Math.cosh<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/expm1\">Math.expm1<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/hypot\">Math.hypot<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/imul\">Math.imul<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/log1p\">Math.log1p<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/log10\">Math.log10<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/log2\">Math.log2<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/sign\">Math.sign<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/sinh\">Math.sinh<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/tanh\">Math.tanh<\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\/trunc\">Math.trunc<\/a>.<\/p>\n<p>  <a name=\"es6-symbol\"><\/a><\/p>\n<h2><b><a href=\"#es6-symbol\">#<\/a> ECMAScript 6: \u0421\u0438\u043c\u0432\u043e\u043b\u044b<\/b><\/h2>\n<hr\/>\n<p>  \u0412 JavaScript \u0441 \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u0435\u043b\u0430 \u043e\u0431\u0441\u0442\u043e\u044f\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0445\u043e. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u0445, \u0447\u0442\u043e \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0430 \u043d\u0435 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 ECMAScript 5, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c <code>enumerable: false<\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0447\u0442\u043e \u0441\u043a\u0440\u043e\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 <code>for-in<\/code> \u0438 \u043e\u0442 <code>Object.keys<\/code>, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u2014 \u043a\u043b\u044e\u0447 \u043d\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c, \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u043c\u0435\u043d \u0438, \u0438\u0437-\u0437\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <code>Object.defineProperty<\/code> \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c-\u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u043c, \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e.<\/p>\n<p>  \u0412 ECMAScript 6 \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 <a href=\"https:\/\/developer.mozilla.org\/ru\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol\">Symbol<\/a>, \u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043a\u0430\u043a <a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=harmony:private_name_objects\">Name<\/a>. \u0421\u0438\u043c\u0432\u043e\u043b\u044b \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 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. <a href=\"http:\/\/goo.gl\/EUsvAf\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var Person = (function(){   var NAME = Symbol('name');   function Person(name){     this[NAME] = name;   }   Person.prototype.getName = function(){     return this[NAME];   };   return Person; })();  var person = new Person('\u0412\u0430\u0441\u044f'); console.log(person.getName());          \/\/ =&gt; '\u0412\u0430\u0441\u044f' console.log(person['name']);            \/\/ =&gt; undefined console.log(person[Symbol('name')]);    \/\/ =&gt; undefined, \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 Symbol \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 for(var key in person)console.log(key); \/\/ =&gt; \u0442\u043e\u043b\u044c\u043a\u043e 'getName', \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0431\u0445\u043e\u0434\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  console.log(typeof Symbol());           \/\/ =&gt; 'symbol' <\/code><\/pre>\n<p>  \u0421\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c\u0438 \u2014 \u043c\u0435\u0442\u043e\u0434 <code>Object.getOwnPropertySymbols<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0447\u0442\u043e \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0440\u043e\u0434\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 <a href=\"#es6-weakmap\"># WeakMap<\/a>. \u0425\u043e\u0442\u044f, \u0418\u041c\u0425\u041e, \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.<\/p>\n<p>  \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 v8, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Chrome 38 (\u0432 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u2014 <a href=\"#v8-harmony-mode\"># \u0441 \u0444\u043b\u0430\u0436\u043a\u043e\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439<\/a>) \u0438 \u0432 \u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445 Firefox, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 33. \u0421\u043a\u043e\u0440\u043e \u043e\u0431\u0435\u0449\u0430\u044e\u0442 \u0438 \u0432 IE, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u0441\u0430\u043c\u043e\u043c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445.<\/p>\n<p>  <a name=\"es6-symbol-polyfill\"><\/a><a href=\"#es6-symbol-polyfill\"><b>#<\/b><\/a> \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u0444\u0438\u043b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 ES5 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d, \u043d\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432 \u043e\u0431\u0445\u043e\u0434\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 <code>for-in<\/code> \u0438 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 <code>Object.keys<\/code> \u043a\u043b\u044e\u0447\u0435\u0439 \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<pre><code class=\"javascript\">window.Symbol || (function(){   var id = 0;   window.Symbol = function(description){     if(this instanceof Symbol)throw new TypeError('Symbol is not a constructor');     var symbol = Object.create(Symbol.prototype)       , tag    = 'Symbol(' + description + ')_' + (++id + Math.random()).toString(36);     symbol.tag = tag;     Object.defineProperty(Object.prototype, tag, {       configurable: true,       set: function(it){         Object.defineProperty(this, tag, {           enumerable  : false,           configurable: true,           writable    : true,           value       : it         });       }     });     return symbol;   }   Symbol.prototype.toString = function(){     return this.tag;   } })(); <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <code>Symbol<\/code> \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447-\u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>&quot;Symbol(description)_m.y9oth2pcqaypsyvi&quot;<\/code>, \u0438 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443 \u0432 <code>Object.prototype<\/code> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0442\u0442\u0435\u0440. \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435-\u043a\u043b\u044e\u0447\u0443, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u00bb, \u0441\u0435\u0442\u0442\u0435\u0440 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 <code>enumerable: false<\/code> \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. \u041e\u0434\u043d\u0430\u043a\u043e, \u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u00bb \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0438\u043d\u0443\u0441\u043e\u0432, \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c:<\/p>\n<ul>\n<li>\u041f\u0438\u0448\u0435\u0442 \u0441\u0435\u0442\u0442\u0435\u0440 \u0432 <code>Object.prototype<\/code>: \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0441\u043e\u0431\u043e \u0437\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/li>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432: \u0432 IE8- \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u0437\u0430 \u0441\u0447\u0435\u0442 <a href=\"#es5-desc\"># \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438<\/a> <code>Object.defineProperty<\/code>), \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0435\u0442\u0442\u0435\u0440\u043e\u0432 \u0432 <code>Object.prototype<\/code>, \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u044b\u00bb \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b.<\/li>\n<li>\u0412 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445, \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 <code>Object.prototype<\/code> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Object.create(null)<\/code>), \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u044b\u00bb \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b.<\/li>\n<li><code>Symbol() in {}<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 <code>true<\/code> \u2014 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0438\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/li>\n<li><code>typeof Symbol()<\/code> \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d <code>'object'<\/code> \u2014 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 JavaScript \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<li>\u041d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c <code>Object.getOwnPropertySymbols<\/code> \u2014 \u043b\u0438\u0448\u043d\u044f\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f <code>Object.getOwnPropertyNames<\/code> \u043f\u043b\u043e\u0445\u043e \u0441\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, <code>Object.getOwnPropertyNames<\/code> \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0438 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u044b\u00bb.<\/li>\n<\/ul>\n<p>  <a name=\"es6-symbol-pure\"><\/a><a href=\"#es6-symbol-pure\"><b>#<\/b><\/a> \u0415\u0441\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043e\u043d\u043e \u0442\u0443\u0442 \u0434\u0435\u043b\u0430\u0435\u0442? \u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 <code>Object.prototype<\/code>, \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043e\u0439\u0434\u0435\u0442. \u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043f\u0430\u0440\u0443 \u0445\u0435\u043b\u043f\u0435\u0440\u043e\u0432. <code>Symbol.pure<\/code>, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043d\u0435\u0442 \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443-\u043a\u043b\u044e\u0447 \u0431\u0435\u0437 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0442\u0435\u0440\u0430 \u0432 <code>Object.prototype<\/code>, \u0438 <code>Symbol.set<\/code>, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043a\u043b\u044e\u0447\u0443, \u043d\u0435\u0442 \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>Object.defineProperty<\/code> \u0441 <code>enumerable: false<\/code>. \u0422\u0430\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043e\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0435\u043b\u043f\u0435\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 <code>Symbol<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 <a href=\"http:\/\/goo.gl\/DmPIbT\">\u0442\u0430\u043a<\/a>:<\/p>\n<pre><code class=\"javascript\">var Person = function(){   var NAME = Symbol.pure('name');   function Person(name){     Symbol.set(this, NAME, name);   }   Person.prototype.getName = function(){     return this[NAME];   };   return Person; }(); <\/code><\/pre>\n<p>  <a name=\"es6-reflect-own-keys\"><\/a><a href=\"#es6-reflect-own-keys\"><b>#<\/b><\/a> \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0432\u044b\u0448\u0435, \u043c\u0435\u0442\u043e\u0434 <code>Object.getOwnPropertySymbols<\/code> \u043c\u044b \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c. \u0410 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439, \u043f\u0440\u0438\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u044e\u0447\u0435\u0439, \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a, \u0442\u0430\u043a \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. ECMAScript 6 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <a href=\"http:\/\/people.mozilla.org\/~jorendorff\/es6-draft.html#sec-reflect-object\">\u043c\u043e\u0434\u0443\u043b\u044c <code>Reflect<\/code><\/a> \u2014 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Proxy#Handler_API\">\u043d\u0430\u0431\u043e\u0440 \u0437\u0430\u0433\u043b\u0443\u0448\u0435\u043a<\/a> \u0434\u043b\u044f <code>Proxy<\/code>. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>Proxy<\/code>, \u043c\u043e\u0434\u0443\u043b\u044c <code>Reflect<\/code> \u043d\u0430\u043c \u043e\u0441\u043e\u0431\u043e \u0438 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>Reflect.ownKeys<\/code>, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u0432\u0441\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u2014 \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0430\u043a \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0442.\u0435. <code>Object.getOwnPropertyNames + Object.getOwnPropertySymbols<\/code>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434. <a href=\"http:\/\/goo.gl\/fyu6pn\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var O = {a: 1}; Object.defineProperty(O, 'b', {value: 2}); O[Symbol('c')] = 3; Reflect.ownKeys(O); \/\/ =&gt; ['a', 'b', Symbol(c)] <\/code><\/pre>\n<p>  <a name=\"es6-symbol-registry\"><\/a><a href=\"#es6-symbol-registry\"><b>#<\/b><\/a> \u0422\u0430\u043a\u0436\u0435 ES6 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0443\u044e \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0448\u0442\u0443\u043a\u0443, \u043a\u0430\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u2014 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol\/for\">Symbol.for<\/a> \u0438 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol\/keyFor\">Symbol.keyFor<\/a>. <code>Symbol.for<\/code> \u0438\u0449\u0435\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e \u043a\u043b\u044e\u0447\u0443-\u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u2014 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e. <code>Symbol.keyFor<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b. <a href=\"http:\/\/goo.gl\/0pdJjX\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var symbol = Symbol.for('key'); symbol === Symbol.for('key'); \/\/ true Symbol.keyFor(symbol);        \/\/ 'key' <\/code><\/pre>\n<p>  \u041a\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0440\u043e\u0447\u0435\u043c\u0443, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b <a href=\"#es6-iterable-interface\"># <code>Symbol.iterator<\/code><\/a> \u0438 <a href=\"#classof\"># <code>Symbol.toStringTag<\/code><\/a>.<\/p>\n<p>  <a name=\"es6-collections\"><\/a><\/p>\n<h2><b><a href=\"#es6-collections\">#<\/a> ECMAScript 6: \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/b><\/h2>\n<hr\/>\n<p>  \u0412 ECMAScript 6 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f 4 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0434\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439: <code>Map, Set, WeakMap<\/code> \u0438 <code>WeakSet<\/code>. \u0415\u0441\u0442\u044c \u0435\u0449\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/119694\/\">\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b<\/a>, \u043d\u043e \u043f\u043e\u043a\u0430 \u043e\u0431\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u0431\u0435\u0437 \u043d\u0438\u0445.<\/p>\n<ul>\n<li><a href=\"#es6-collections-overview\"># \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/a><\/li>\n<li><a href=\"#es6-collections-support\"># \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u0432\u0438\u0436\u043a\u0430\u043c\u0438<\/a><\/li>\n<li><a href=\"#es6-map-set\"># \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>Map<\/code> \u0438 <code>Set<\/code><\/a><\/li>\n<li><a href=\"#es6-weak\"># \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043b\u0430\u0431\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/a><\/li>\n<\/ul>\n<p>  <a name=\"es6-collections-overview\"><\/a><a href=\"#es6-collections-overview\"><b>#<\/b><\/a> \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438?<\/p>\n<p>  <a name=\"es6-map\"><\/a><a href=\"#es6-map\"><b>#<\/b><\/a> <b><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Map\">Map<\/a><\/b> \u2014 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043a\u043b\u044e\u0447 \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 JavaScript \u2014 \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u0442\u0430\u043a \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u0430 \u2014 \u0438\u043c\u0435\u044e\u0442 <a href=\"#es6-iterators\"># \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/a> \u0438 \u043c\u0435\u0442\u043e\u0434 <code>.forEach<\/code>, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>.size<\/code>. <a href=\"http:\/\/goo.gl\/RDbROF\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var a = [1];  var map = new Map([['a', 1], [42, 2]]); map.set(a, 3).set(true, 4);  console.log(map.size);        \/\/ =&gt; 4 console.log(map.has(a));      \/\/ =&gt; true console.log(map.has([1]));    \/\/ =&gt; false console.log(map.get(a));      \/\/ =&gt; 3 map.forEach(function(val, key){   console.log(val);           \/\/ =&gt; 1, 2, 3, 4   console.log(key);           \/\/ =&gt; 'a', 42, [1], true }); map.delete(a); console.log(map.size);        \/\/ =&gt; 3 console.log(map.get(a));      \/\/ =&gt; undefined console.log(Array.from(map)); \/\/ =&gt; [['a', 1], [42, 2], [true, 4]] <\/code><\/pre>\n<p>  <a name=\"es6-set\"><\/a><a href=\"#es6-set\"><b>#<\/b><\/a> <b><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Set\">Set<\/a><\/b> \u2014 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041a\u0430\u043a \u0438 \u0443 <code>Map<\/code>, \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u0430. <a href=\"http:\/\/goo.gl\/7XYya3\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var set = new Set(['a', 'b', 'a', 'c']); set.add('d').add('b').add('e'); console.log(set.size);        \/\/ =&gt; 5 console.log(set.has('b'));    \/\/ =&gt; true set.forEach(function(it){   console.log(it);            \/\/ =&gt; 'a', 'b', 'c', 'd', 'e' }); set.delete('b'); console.log(set.size);        \/\/ =&gt; 4 console.log(set.has('b'));    \/\/ =&gt; false console.log(Array.from(set)); \/\/ =&gt; ['a', 'c', 'd', 'e'] <\/code><\/pre>\n<p>  <a name=\"es6-weakmap\"><\/a><a href=\"#es6-weakmap\"><b>#<\/b><\/a> <b><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/WeakMap\">WeakMap<\/a><\/b> \u2014 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c <b>\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/b>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u0430\u0431\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u2014 \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u044a\u0435\u043a\u0442-\u043a\u043b\u044e\u0447 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f (\u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043c\u0443\u0441\u043e\u0440\u0430), \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u043f\u0430\u0440\u0430 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u041d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043e\u0439\u0442\u0438 \u2014 \u043d\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <code>.forEach<\/code>, \u043d\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>.size<\/code>. \u042d\u0442\u043e \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u043e\u043b\u0435\u0435 \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u0439\u00bb, \u043d\u043e \u0438 <a href=\"https:\/\/esdiscuss.org\/topic\/weakmap-better-than-private-symbols-was-direct-proxies-problem#content-8\">\u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0451\u043c\u043a\u0438\u0439<\/a>, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"#es6-symbol\"># \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/a>. \u0415\u0441\u043b\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0432 JavaScript \u0442\u0430\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u044f\u0442 <a href=\"https:\/\/github.com\/zenparsing\/es-abstract-refs#examples\">abstract references<\/a>, \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441. <a href=\"http:\/\/goo.gl\/wCvuq3\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var a = [1]   , b = [2]   , c = [3];  var wmap = new WeakMap([[a, 1], [b, 2]]); wmap.set(c, 3).set(b, 4); console.log(wmap.has(a));   \/\/ =&gt; true console.log(wmap.has([1])); \/\/ =&gt; false console.log(wmap.get(a));   \/\/ =&gt; 1 wmap.delete(a); console.log(wmap.get(a));   \/\/ =&gt; undefined  \/\/ \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 var Person = (function(){   var names = new WeakMap;   function Person(name){     names.set(this, name);   }   Person.prototype.getName = function(){     return names.get(this);   };   return Person; })();  var person = new Person('\u0412\u0430\u0441\u044f'); console.log(person.getName());          \/\/ =&gt; '\u0412\u0430\u0441\u044f' for(var key in person)console.log(key); \/\/ =&gt; \u0442\u043e\u043b\u044c\u043a\u043e 'getName' <\/code><\/pre>\n<p>  <a name=\"es6-weakset\"><\/a><a href=\"#es6-weakset\"><b>#<\/b><\/a> <b><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/WeakSet\">WeakSet<\/a><\/b> \u2014 \u043d\u0443 \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438. \u041f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u0430\u0431\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u043c\u0438. <a href=\"http:\/\/goo.gl\/TdFbEx\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var a = [1]   , b = [2]   , c = [3];  var wset = new WeakSet([a, b, a]); wset.add(c).add(b).add(c); console.log(wset.has(b));   \/\/ =&gt; true console.log(wset.has([2])); \/\/ =&gt; false wset.delete(b); console.log(wset.has(b));   \/\/ =&gt; false <\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 <b>\u0434\u043e\u043b\u0436\u043d\u044b<\/b> \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u0443\u0431\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430. \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f <a href=\"#same-value-zero\"># SameValueZero<\/a>.<\/p>\n<p>  <a name=\"es6-collections-support\"><\/a><b><a href=\"#es6-collections-support\">#<\/a><\/b> \u0427\u0442\u043e \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u044d\u0442\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0443 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 js? \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e.<\/p>\n<ul>\n<li>\u0412 <b>Firefox<\/b> \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 <code>Map, Set<\/code> \u0438 <code>WeakMap<\/code>. \u0412 \u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438 <code>WeakSet<\/code>. <code>Map<\/code> \u0438 <code>Set<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. <code>Map<\/code> \u0438 <code>Set<\/code> \u0438\u043c\u0435\u044e\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u043c\u0435\u0442\u043e\u0434 <code>.forEach<\/code>.<\/li>\n<li>\u0412 <b>v8<\/b> \u2014 \u0447\u0438\u0442\u0430\u0439 <b>Chrome, Opera \u0438 Node.js<\/b>, \u0435\u0441\u0442\u044c \u0432\u0441\u0435 4 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0434\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Chrome 38, \u0432\u0441\u0435 \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0431\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439. \u0427\u0443\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435 \u0431\u044b\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b <code>WeakMap<\/code> \u0438 <code>WeakSet<\/code>. \u0412 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b <a href=\"#v8-harmony-mode\"># \u0441 \u0444\u043b\u0430\u0436\u043a\u043e\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439<\/a>. \u0414\u043e \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 v8 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u0443 <code>Map<\/code> \u0438 <code>Set<\/code> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u043c\u0435\u0442\u043e\u0434 <code>.forEach<\/code>, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 <code>Map<\/code> \u0438 <code>Set<\/code> \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438.<\/li>\n<li>\u0412 <b>IE11<\/b> \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0442\u0435 \u0436\u0435 <code>Map, Set<\/code> \u0438 <code>WeakMap<\/code>. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. <code>Map<\/code> \u0438 <code>Set<\/code> \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u043d\u043e \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>.forEach<\/code>.<\/li>\n<li>\u0412 <b>Safari<\/b> \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043b\u0443\u0447\u0448\u0435 \u0431\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0430\u043a. \u0415\u0441\u0442\u044c <code>Map, Set<\/code> \u0438 <code>WeakMap<\/code>. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b, \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u043d\u043e, \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e, \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>next<\/code>. \u0415\u0441\u0442\u044c <code>forEach<\/code>, \u043d\u043e \u043c\u0435\u0442\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0432 \u043a\u043e\u043b\u043b\u0431\u044d\u043a \u043d\u0435 3 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0434\u043b\u044f <code>Set<\/code> \u0438 2 \u0434\u043b\u044f <code>Map<\/code>.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 <code>.add<\/code> \u0438 <code>.set<\/code> \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <code>this<\/code> \u2014 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041d\u043e \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u043b\u0435\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u0414\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u041f\u0440\u043e \u0441\u0430\u043c\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0432 <a href=\"#es6-iterators\"># \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435<\/a>.<\/p>\n<p>  \u041d\u0443 \u0430 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b \u0441\u0430\u043c\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0430\u043b\u044c\u0448\u0435. \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u2014 \u0431\u044b\u0441\u0442\u0440\u044b\u0445, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0438\u0441\u0442\u044b\u0445 \u0438 \u0431\u0435\u0437 \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 (\u0434\u043b\u044f WeakMap), \u043d\u0430 \u0431\u0430\u0437\u0435 ECMAScript 5 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u043e\u0434\u043d\u0430\u043a\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441.<\/p>\n<p>  <a name=\"es6-map-set\"><\/a><\/p>\n<h4><b><a href=\"#es6-map-set\">#<\/a> \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Map \u0438 Set<\/b><\/h4>\n<p>  \u0427\u0442\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>Map<\/code>? \u0412 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 <code>Map<\/code> \u2014 2 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0438\u0449\u0435\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443. \u0418\u043b\u0438, \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f, \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432-\u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439. \u0427\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0438 \u0432 \u0442\u043e\u043c, \u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435? \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u2014 O(n), \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 uniq \u2014 O(n<sup>2<\/sup>). \u0427\u0435\u043c \u044d\u0442\u043e \u043d\u0430\u043c \u0433\u0440\u043e\u0437\u0438\u0442? \u0412\u043e\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0435\u0441\u0442:<\/p>\n<pre><code class=\"javascript\">var array = []; for(var i = 0; i &lt; 100000; i++)array.push([{}, {}]); array = array.concat(array); console.time('Map test'); var map = new Map(array); console.timeEnd('Map test'); console.log('Map size: ' + map.size); <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 200000 \u0442\u044b\u0441\u044f\u0447 \u043f\u0430\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435), 100000 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e <code>Map<\/code>.<\/p>\n<p>  \u0418\u0441\u043f\u044b\u0442\u0430\u0435\u043c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 <code>Map<\/code>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Firefox:<\/p>\n<pre><code class=\"javascript\">Map test: \u0442\u0430\u0439\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0449\u0435\u043d Map test: 46.25\u043c\u0441 Map size: 100000 <\/code><\/pre>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u043d\u0451\u043c \u0436\u0435 <code>Map<\/code> \u0438\u0437 <a href=\"https:\/\/github.com\/paulmillr\/es6-shim\">\u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e<\/a> \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0430 ECMAScript 6:<\/p>\n<pre><code class=\"javascript\">Map test: \u0442\u0430\u0439\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0449\u0435\u043d Map test: 506823.31\u043c\u0441 Map size: 100000 <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 8.5 \u043c\u0438\u043d\u0443\u0442. \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u043e 100000 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445. \u041e\u0442\u0441\u044e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.<\/p>\n<p>  \u0421\u0443\u0431\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0412 ECMAScript 5 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e <code>Object<\/code>, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u0438. \u0412 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0430-\u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 \u0447\u0438\u0441\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0449\u0438\u0439 \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0434\u043e O(1):<\/p>\n<pre><code class=\"javascript\">function fastKey(key){   if(typeof key === 'string')return '$' + key;   else if(typeof key === 'number')return key;   return null; }; <\/code><\/pre>\n<p>  \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d <code>Map<\/code>, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b? <code>Object.create(null)<\/code> \u0441 \u044d\u0442\u0438\u043c <a href=\"#dict\"># \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f<\/a>.<\/p>\n<p>  \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443-\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0430-\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0433\u043a\u0430 \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c-\u043a\u043b\u044e\u0447\u0430\u043c \u0441\u0438\u043c\u0432\u043e\u043b \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"javascript\">var STOREID = Symbol('storeId')   , id      = 0; function fastKey(it){   \/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c 'S' \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0438 \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c 'P' \u0435\u0441\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432   if(it !== Object(it))return (typeof it == 'string' ? 'S' : 'P') + it;   \/\/ \u0415\u0441\u043b\u0438 \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 - \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c   if(!Object.hasOwnProperty.call(it, STOREID))it[STOREID] = ++id;   \/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c 'O'   return 'O' + it[STOREID]; } <\/code><\/pre>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c <code>Map<\/code> \u043d\u0435 \u043d\u0430 2 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u0438\u043b\u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432-\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0430 \u043d\u0430 2 \u0445\u044d\u0448\u0430\u0445 <code>Object<\/code>, \u0442\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0414\u0440\u0443\u0433\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 \/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e: \u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u0432\u0438\u0436\u043a\u0430\u0445 \u043a\u043b\u044e\u0447\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0439-\u0447\u0438\u0441\u0435\u043b, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c \u0443 \u0432\u0441\u0435\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441-\u0431\u0443\u043a\u0432\u0430, \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442. \u0418\u0442\u043e\u0433\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<pre><code>Map test: \u0442\u0430\u0439\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0449\u0435\u043d Map test: 669.93\u043c\u0441 Map size: 100000 <\/code><\/pre>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445, \u043d\u043e, \u0434\u0443\u043c\u0430\u044e, \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043e\u0439\u0434\u0435\u0442. \u0414\u0430, \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u043a\u043b\u044e\u0447-\u043e\u0431\u044a\u0435\u043a\u0442 \u2014 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 <a href=\"#es5-freeze\"># frozen-\u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/a>, \u043d\u043e \u0437\u0430\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b. <code>Set<\/code> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u0430 1 \u0445\u044d\u0448\u0435.<\/p>\n<p>  <a name=\"es6-weak\"><\/a><\/p>\n<h4><b><a href=\"#es6-weak\">#<\/a> \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043b\u0430\u0431\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/b><\/h4>\n<p>  \u0421\u043b\u0430\u0431\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435. \u0423 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u043c\u0435\u0442\u043e\u0434\u0430 <code>.forEach<\/code>, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>.size<\/code>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043e\u043d\u0430 \u0443\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0430\u0431\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u2014 \u043a\u043b\u044e\u0447\u0438 \/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u044f\u0442\u044c\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e <code>Set<\/code> \u0438 <code>Map<\/code>. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043b\u044e\u0447\u0435, \u0430 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0451 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u0422\u0430\u043a \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043d\u0430 \u043a\u043b\u044e\u0447\u0435, \u0432 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0435 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">window.WeakMap || (function(){   var id       = 0     , has      = Function.call.bind(Object.prototype.hasOwnProperty)     , WEAKDATA = Symbol('WeakData')     , ID       = Symbol('ID');   window.WeakMap = function(){     if(!(this instanceof WeakMap))throw TypeError();     this[ID] = id++;   }   Object.assign(WeakMap.prototype, {     clear: function(){       this[ID] = id++;     },     'delete': function(key){       return this.has(key) && delete key[WEAKDATA][this[ID]];     },     has: function(key){       return key === Object(key) && has(key, WEAKDATA) && has(key[WEAKDATA], this[ID]);     },     get: function(key){       if(key === Object(key) && has(key, WEAKDATA))return key[WEAKDATA][this[ID]];     },     set: function(key, value){       if(key !== Object(key))throw TypeError();       if(!has(key, WEAKDATA))key[WEAKDATA] = {};       key[WEAKDATA][this[ID]] = value;       return this;     }   }); })(); <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043a\u043b\u044e\u0447 \u043e\u043d \u043d\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u0443\u0442\u0435\u043a\u0430\u0435\u0442:<\/p>\n<pre><code class=\"javascript\">\/\/ &lt;- \u0442\u0443\u0442 \u0434\u0435\u043b\u0430\u0435\u043c snapshot 1 var array = []; for(var i = 0; i &lt; 100000; i++)array[i] = {}; var wm = new WeakMap(); for(var i = 0; i &lt; 100000; i++)wm.set(array[i], {}); \/\/ &lt;- \u0442\u0443\u0442 \u0434\u0435\u043b\u0430\u0435\u043c snapshot 2 array = null; \/\/ &lt;- \u0442\u0443\u0442 \u0434\u0435\u043b\u0430\u0435\u043c snapshot 3 <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/7b2\/a07\/b54\/7b2a07b54f664478a8b7a25be220cbe2.png\"\/><\/p>\n<p>  <b>\u041d\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0443\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f.<\/b> \u041f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 \u0435\u0433\u043e \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 <code>.clear<\/code>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u043a\u043b\u044e\u0447\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0443\u0442\u0435\u0447\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0431\u044b\u0432\u0448\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u043e\u043c. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u0438\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u0431\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 <code>WeakMap<\/code> \u0436\u0438\u043b\u0438 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0438\u0445 \u043a\u043b\u044e\u0447\u0438. \u041a\u0442\u043e-\u0442\u043e <a href=\"\/company\/uprock\/blog\/200644\/\">\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f<\/a> \u043e\u0431\u043e\u0439\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0443\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u044d\u0442\u043e \u0438\u0437 \u0440\u0430\u0437\u0440\u044f\u0434\u0430 \u044d\u0437\u043e\u0442\u0435\u0440\u0438\u043a\u0438 \u2014 <a href=\"\/company\/uprock\/blog\/200644\/#comment_6941924\">\u043f\u0430\u043c\u044f\u0442\u044c \u0443\u0442\u0435\u043a\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0432 \u0442\u0435\u0445 \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u044f\u0445<\/a>.<\/p>\n<p>  \u0423 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>WeakSet<\/code> \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0441\u0432\u0435\u0434\u0435\u043d\u0430 \u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u2014 \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u044f\u0436\u0435\u043b\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u043d\u0430 \u043a\u043b\u044e\u0447\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043b\u0430\u0433 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>  <a name=\"es6-iterators\"><\/a><\/p>\n<h2><b><a href=\"#es6-iterators\">#<\/a> ECMAScript 6: \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/b><\/h2>\n<hr\/>\n<p>  \u0412 ECMAScript 6 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u2014 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0445\u043e\u0434\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e. \u0422\u0430\u043a \u043a\u0430\u043a \u043a \u043d\u0435\u043c\u0443 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438 \u0438\u0445. \u041d\u043e, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u044d\u0442\u043e \u043d\u0435 \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u043b\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f. \u041a \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438:<\/p>\n<ul>\n<li><a href=\"#es6-iter-interface\"># \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/a><\/li>\n<li><a href=\"#es6-iterable-interface\"># \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0441\u0438\u043c\u0432\u043e\u043b <code>Symbol.iterator<\/code><\/a><\/li>\n<li><a href=\"#es6-generators\"># \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/a><\/li>\n<li><a href=\"#es6-for-of\"># \u0426\u0438\u043a\u043b <code>for-of<\/code><\/a><\/li>\n<li><a href=\"#es6-native-iterables\"># \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b, \u0438\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0435<\/a><\/li>\n<li><a href=\"#es6-use-iter\"># \u041c\u0435\u0442\u043e\u0434\u044b \u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0435 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/a><\/li>\n<li><a href=\"#es6-spread\"># \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 spread<\/a><\/li>\n<li><a href=\"#es6-comprehensions\"># Array \/ generator comprehensions<\/a><\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u2014 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u0432 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u044c <code>$for<\/code>, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u044d\u0442\u0438\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441 <a href=\"#preprocessors\"># \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c ES6+<\/a>, \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0451 \u0431\u0435\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<p>  <a name=\"es6-iter-interface\"><\/a><a href=\"#es6-iter-interface\"><b>#<\/b><\/a> <b>\u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440<\/b> \u2014 \u043e\u0431\u044a\u0435\u043a\u0442, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 <code>.next<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 <code>.done<\/code> \u2014 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d \u043b\u0438 \u043e\u0431\u0445\u043e\u0434 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0438 <code>.value<\/code> \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430. \u041f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043c\u0435\u0442\u043e\u0434, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0439 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0446\u0435\u043b\u044b\u0435 \u043e\u0442 0 \u0434\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e (<a href=\"http:\/\/goo.gl\/j9evDY\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">function NumberIterator(number){   var i = 0;   return {     next: function(){       return i &lt; number         ? {done: false, value: i++}         : {done: true};     }   } }  var iter = NumberIterator(3); iter.next(); \/\/ =&gt; {done: false, value: 0} iter.next(); \/\/ =&gt; {done: false, value: 1} iter.next(); \/\/ =&gt; {done: false, value: 2} iter.next(); \/\/ =&gt; {done: true} <\/code><\/pre>\n<p>  <a name=\"es6-iterable-interface\"><\/a><a href=\"#es6-iterable-interface\"><b>#<\/b><\/a> <b>\u0418\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442<\/b> (Iterable) \u2014 \u043e\u0431\u044a\u0435\u043a\u0442, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e \u043a\u043b\u044e\u0447\u0443 <code>Symbol.iterator<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e \u0431\u044b \u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u044b\u043b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c, \u043f\u043e \u043a\u043b\u044e\u0447\u0443 <code>Symbol.iterator<\/code> \u0443 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 <code>this<\/code>. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0447\u0438\u0441\u043b\u0430 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 (<a href=\"http:\/\/goo.gl\/598H0u\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">Number.prototype[Symbol.iterator] = function(){   return NumberIterator(this); }  Array.from(10); \/\/ =&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <code>Symbol.iterator<\/code>. \u0412 Firefox \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u043d\u043e \u0432 \u043d\u0451\u043c, \u0432 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445, \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 <a href=\"#es6-symbol\"># \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/a> \u0438 \u0432\u043c\u0435\u0441\u0442\u043e <code>Symbol.iterator<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 <code>&quot;@@iterator&quot;<\/code>. \u0412 \u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438 \u0434\u0430\u0436\u0435 <code>Symbol.iterator<\/code>, \u043d\u043e \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 <code>&quot;@@iterator&quot;<\/code>. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 Firefox, \u0432 \u043d\u0435\u043c \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u043f\u043e \u043a\u043b\u044e\u0447\u0443 <code>Symbol.iterator<\/code> (\u0441\u043e\u0437\u0434\u0430\u0451\u043c, \u0435\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442), \u0438 \u043f\u043e \u043a\u043b\u044e\u0447\u0443 <code>&quot;@@iterator&quot;<\/code>. \u0412 v8 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441 Chrome 38.<\/p>\n<p>  <a name=\"es6-generators\"><\/a><a href=\"#es6-generators\"><b>#<\/b><\/a> <b>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/b> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0438\u0445 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u2014 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u2014 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/210330\/\">\u044d\u0442\u043e\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0435. \u0414\u043b\u044f \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c ECMAScript 6. \u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e (<a href=\"http:\/\/goo.gl\/L6IE5S\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">Number.prototype[Symbol.iterator] = function*(){   for(var i = 0; i &lt; this;)yield i++; }  Array.from(10); \/\/ =&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <\/code><\/pre>\n<p>  <a name=\"es6-for-of\"><\/a><a href=\"#es6-for-of\"><b>#<\/b><\/a> <b>\u0426\u0438\u043a\u043b <code>for-of<\/code><\/b> \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041d\u0430 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a (<a href=\"http:\/\/goo.gl\/Hcnp3z\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">for(var num of 5)console.log(num); \/\/ =&gt; 0, 1, 2, 3, 4 <\/code><\/pre>\n<p>  <a name=\"es6-native-iterables\"><\/a><a href=\"#es6-native-iterables\"><b>#<\/b><\/a> \u0412 ECMAScript 6 \u0438\u0441\u043a\u0430\u0440\u043e\u043f\u043a\u0438 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b <code>String, Array, Map, Set<\/code> \u0438 <code>Arguments<\/code>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, <code>Array, Map<\/code> \u0438 <code>Set<\/code> \u0438\u043c\u0435\u044e\u0442 \u043c\u0435\u0442\u043e\u0434\u044b <code>.keys, .values<\/code> \u0438 <code>.entries<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e \u043a\u043b\u044e\u0447\u0430\u043c, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0438 \u043f\u0430\u0440\u0435 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. <b>Core.js \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u043c\u0435\u0442\u043e\u0434\u044b.<\/b> \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0446\u0438\u043a\u043b\u043e\u043c <code>for-of<\/code> \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (<a href=\"http:\/\/goo.gl\/ArArLq\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">var string = 'abc';  for(var val of string)console.log(val);         \/\/ =&gt; 'a', 'b', 'c'  var array = ['a', 'b', 'c'];  for(var val of array)console.log(val);          \/\/ =&gt; 'a', 'b', 'c'. \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - .values for(var val of array.values())console.log(val); \/\/ =&gt; 'a', 'b', 'c' for(var key of array.keys())console.log(key);   \/\/ =&gt; 0, 1, 2 for(var [key, val] of array.entries()){   console.log(key);                             \/\/ =&gt; 0, 1, 2   console.log(val);                             \/\/ =&gt; 'a', 'b', 'c' }  var map = new Map([['a', 1], ['b', 2], ['c', 3]]);  for(var [key, val] of map){                     \/\/ \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - .entries   console.log(key);                             \/\/ =&gt; 'a', 'b', 'c'   console.log(val);                             \/\/ =&gt; 1, 2, 3 } for(var val of map.values())console.log(val);   \/\/ =&gt; 1, 2, 3 for(var key of map.keys())console.log(key);     \/\/ =&gt; 'a', 'b', 'c' for(var [key, val] of map.entries()){   console.log(key);                             \/\/ =&gt; 'a', 'b', 'c'   console.log(val);                             \/\/ =&gt; 1, 2, 3 }  var set = new Set([1, 2, 3, 2, 1]);  for(var val of set)console.log(val);            \/\/ =&gt; 1, 2, 3. \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - .values for(var val of set.values())console.log(val);   \/\/ =&gt; 1, 2, 3 for(var key of set.keys())console.log(key);     \/\/ =&gt; 1, 2, 3. \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440 .keys \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d .values for(var [key, val] of set.entries()){           \/\/ \u0423 Set \u0432 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0435 .entries \u043a\u043b\u044e\u0447 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u044b   console.log(key);                             \/\/ =&gt; 1, 2, 3   console.log(val);                             \/\/ =&gt; 1, 2, 3 }  var list = (function(){return arguments})(1, 2, 3);  for(var val of list)console.log(val);           \/\/ =&gt; 1, 2, 3 <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0412 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c Firefox \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u043a\u0440\u043e\u043c\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>arguments<\/code>. \u0426\u0438\u043a\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e, \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<\/li>\n<li>\u0412 v8, \u0446\u0438\u043a\u043b <code>for-of<\/code>, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Chrome 38, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e (\u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430) \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u043a\u0440\u043e\u043c\u0435 <code>arguments<\/code>. \u0412 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 (\u0441 \u0444\u043b\u0430\u0436\u043a\u043e\u043c) \u043e\u0436\u0438\u0434\u0430\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0430 \u043d\u0435 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442.<\/li>\n<li>\u0412 IE, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u0434\u0430\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.<\/li>\n<\/ul>\n<p>  <a name=\"for-of-helper\"><\/a><a href=\"#for-of-helper\"><b>#<\/b><\/a> \u0420\u0430\u0437 \u0432\u0441\u0451 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b ES6+, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0445\u0435\u043b\u043f\u0435\u0440, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 <code>for-of<\/code> (<a href=\"http:\/\/goo.gl\/B1QWlf\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">$for(new Set([1, 2, 3, 2, 1])).of(function(it){   console.log(it); \/\/ =&gt; 1, 2, 3 });  \/\/ 2\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 $for - \u0444\u043b\u0430\u0433 entries - \u0432 \u043a\u043e\u043b\u043b\u0431\u044d\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f 2 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 $for([1, 2, 3].entries(), true).of(function(key, value){   console.log(key);   \/\/ =&gt; 0, 1, 2   console.log(value); \/\/ =&gt; 1, 2, 3 });  \/\/ 2\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 .of - \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 $for('abc').of(console.log, console); \/\/ =&gt; 'a', 'b', 'c'  \/\/ \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043e\u0431\u0445\u043e\u0434 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0432\u0435\u0440\u043d\u0443\u0432 \u0438\u0437 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 false $for([1, 2, 3, 4, 5]).of(function(it){   console.log(it); \/\/ =&gt; 1, 2, 3   if(it == 3)return false; }); <\/code><\/pre>\n<p>  <a name=\"iter-helpers\"><\/a><a href=\"#iter-helpers\"><b>#<\/b><\/a> \u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>arguments<\/code> \u2014 <code>Object.prototype<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 <b>core.js<\/b> \u043a\u0430\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u043e \u044d\u0442\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u043d\u0430\u0440\u0443\u0436\u0443 \u043f\u0430\u0440\u0443 \u0445\u0435\u043b\u043f\u0435\u0440\u043e\u0432, \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u2014 <code>$for.isIterable(foo)<\/code>, \u043a\u0430\u043a \u0430\u043d\u0430\u043b\u043e\u0433 <code>Symbol.iterator in foo<\/code> \u0438 <code>$for.getIterator(foo)<\/code>, \u043a\u0430\u043a \u0430\u043d\u0430\u043b\u043e\u0433 <code>foo[Symbol.iterator]()<\/code>:<\/p>\n<pre><code class=\"javascript\">var list = (function(){return arguments})(1, 2, 3);  console.log($for.isIterable(list)); \/\/ =&gt; true console.log($for.isIterable({}));   \/\/ =&gt; false  var iter = $for.getIterator(list); console.log(iter.next());           \/\/ =&gt; {value: 1, done: false} console.log(iter.next());           \/\/ =&gt; {value: 2, done: false} console.log(iter.next());           \/\/ =&gt; {value: 3, done: false} console.log(iter.next());           \/\/ =&gt; {value: undefined, done: true} <\/code><\/pre>\n<p>  <a name=\"es6-use-iter\"><\/a><a href=\"#es6-use-iter\"><b>#<\/b><\/a> \u0412 ECMAScript 6 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"#es6-collections\"># \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/a> <code>Map, Set, WeakMap, WeakSet<\/code>, \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 <a href=\"#es6-array-from\"># \u0447\u0435\u0440\u0435\u0437 <code>Array.from<\/code><\/a>, \u0438\u0445 \u043e\u0436\u0438\u0434\u0430\u044e\u0442 \u043c\u0435\u0442\u043e\u0434\u044b <code>Promise.all, Promise.race<\/code> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 <a href=\"#es6-promise\"># \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f\u043c\u0438<\/a>.<\/p>\n<p>  <a name=\"es6-spread\"><\/a><a href=\"#es6-spread\"><b>#<\/b><\/a> \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <a href=\"http:\/\/www.2ality.com\/2011\/08\/spreading.html\">spread<\/a>, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b\u0439 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u0432 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0442\u0430\u043a\u0436\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0430\u043b\u0435\u043a\u0430\u044f \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0442\u0435\u043c\u0430. \u0415\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u2014 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u0432 \u0437\u0443\u0431\u044b. <a href=\"http:\/\/goo.gl\/sf7BPy\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">[...new Set([1, 2, 3, 2, 1])]; \/\/ =&gt; [1, 2, 3] console.log(1, ...[2, 3, 4]);  \/\/ =&gt; 1, 2, 3, 4 var map = new Map([[1, 'a'], [2, 'b']]); new Array(...map.keys(), 3);   \/\/ =&gt; [1, 2, 3] <\/code><\/pre>\n<p>  <a name=\"es6-comprehensions\"><\/a><a href=\"#es6-comprehensions\"><b>#<\/b><\/a> \u041a\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0440\u043e\u0447\u0435\u043c\u0443, \u043a \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0438 <a href=\"http:\/\/www.2ality.com\/2013\/01\/comprehensions.html\">array \/ generator comprehensions<\/a> (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BF%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%BE%D0%B5_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5\">\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \/ \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430?<\/a>). \u0420\u0430\u043d\u044c\u0448\u0435 \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0435 ECMAScript 6, \u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u044b \u0434\u043e ECMAScript 7, \u0445\u043e\u0442\u044f \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Operators\/Array_comprehensions\">Firefox<\/a>. \u042d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043b\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u0437 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0422.\u0435. <b>\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 <code>filter<\/code> \u0438 <code>map<\/code> \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/b>. \u041f\u0440\u0438\u043c\u0435\u0440\u044b, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u2014 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 <b>FF<\/b>. \u0412 <b>6to5<\/b> \u0438 <b>Traceur<\/b> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u0451. <a href=\"http:\/\/goo.gl\/mz9zv2\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var ar1 = [for(i of [1, 2, 3])i * i];    \/\/ =&gt; [1, 4, 9]  var set = new Set([1, 2, 3, 2, 1]); var ar2 = [for(i of set)if(i % 2)i * i]; \/\/ =&gt; [1, 9]  var iter = (for(i of set)if(i % 2)i * i); iter.next(); \/\/ =&gt; {value: 1, done: false} iter.next(); \/\/ =&gt; {value: 9, done: false} iter.next(); \/\/ =&gt; {value: undefined, done: true}  var map1 = new Map([['a', 1], ['b', 2], ['c', 3]]); var map2 = new Map((for([k, v] of map1)if(v % 2)[k + k, v * v])); \/\/ =&gt; Map {aa: 1, cc: 9} <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 \u2014 \u0448\u0442\u0443\u043a\u0430 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0430\u044f. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441.<\/p>\n<p>  <a name=\"for\"><\/a><a href=\"#for\"><b>#<\/b><\/a> \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c ES6, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435, \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u043e\u0434\u0443\u043b\u044f <code>$for<\/code>. \u0412\u044b\u0437\u043e\u0432 <code>$for<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 <code>of<\/code>, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0448\u0435, <code>filter, map<\/code> \u0438 <code>array<\/code>. \u041c\u0435\u0442\u043e\u0434\u044b <code>filter<\/code> \u0438 <code>map<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0447\u0442\u043e, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0438\u043b\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d \u0442\u0435\u043c\u0438 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438, \u0447\u0442\u043e \u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 <code>$for<\/code>. \u041c\u0435\u0442\u043e\u0434 <code>array<\/code> \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0443, \u043e\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 map-\u043a\u043e\u043b\u043b\u0431\u044d\u043a. \u0423 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432\u0442\u043e\u0440\u043e\u0439, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 <code>$for<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0444\u043b\u0430\u0433 <code>entries<\/code>, \u0432\u0441\u0435 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <a href=\"http:\/\/goo.gl\/JHecXL\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var ar1 = $for([1, 2, 3]).array(function(v){   return v * v; }); \/\/ =&gt; [1, 4, 9]  var set = new Set([1, 2, 3, 2, 1]); var ar1 = $for(set).filter(function(v){   return v % 2; }).array(function(v){   return v * v; }); \/\/ =&gt; [1, 9]  var iter = $for(set).filter(function(v){   return v % 2; }).map(function(v){   return v * v; }); iter.next(); \/\/ =&gt; {value: 1, done: false} iter.next(); \/\/ =&gt; {value: 9, done: false} iter.next(); \/\/ =&gt; {value: undefined, done: true}  var map1 = new Map([['a', 1], ['b', 2], ['c', 3]]); var map2 = new Map($for(map1, true).filter(function(k, v){   return v % 2; }).map(function(k, v){   return [k + k, v * v]; })); \/\/ =&gt; Map {aa: 1, cc: 9} <\/code><\/pre>\n<p>  \u0421 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 ES5 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e, \u043d\u043e \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 comprehensions.<\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0432 \u043c\u043e\u0434\u0443\u043b\u044c <code>$for<\/code>, \u0447\u0442\u043e \u0434\u0430\u043b\u043e \u0431\u044b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u043b\u0435\u043d\u0438\u0432\u044b\u0439 (\u0442\u0430\u043a\u043e\u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432) \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0445\u043e\u0434\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u043c \u044d\u0442\u043e \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043a \u0447\u0451\u0440\u0442\u0443.<\/p>\n<p>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 (<a href=\"#dict-iter\"># \u0440\u0430\u0437<\/a>, <a href=\"#num-iter\"># \u0434\u0432\u0430<\/a>), \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <a href=\"#dict-module\"># <code>Dict<\/code><\/a> \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0432 \u044d\u0442\u0443 \u0433\u043b\u0430\u0432\u0443 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u0432\u0441\u0435 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438.<\/p>\n<p>  <a name=\"es6-promise\"><\/a><\/p>\n<h2><b><a href=\"#es6-promise\">#<\/a> ECMAScript 6: \u041e\u0431\u0435\u0449\u0430\u043d\u0438\u044f<\/b><\/h2>\n<hr\/>\n<p>  \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0438 JavaScript \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0443\u0436\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0438\u043d\u043e\u043d\u0438\u043c\u044b. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 ECMAScript 5 \u043d\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e. \u0414\u0430\u0436\u0435 \u0442\u0430\u043a\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u0430\u043a <code>setTimeout<\/code> \u0438 <code>setInterval<\/code>, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f web-\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c\u0438 W3C \u0438 WHATWG, <a href=\"#timeout-interval\"># \u043e \u043d\u0438\u0445 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435<\/a>. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u2014 \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 <a href=\"http:\/\/callbackhell.com\/\">\u043a\u043e\u043b\u043b\u0431\u044d\u043a-\u0430\u0434<\/a>. \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/github.com\/caolan\/async\">async.js<\/a>.<\/p>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0448\u0430\u0431\u043b\u043e\u043d Promise (\u041e\u0431\u0435\u0449\u0430\u043d\u0438\u0435). \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430-\u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0435\u0451 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041c\u0435\u0442\u043e\u0434\u044b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434, \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a: \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 <code>try-catch<\/code> \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u043f\u0443\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0434. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432 \u043d\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u2014 \u043a\u0430\u043a \u0431\u0440\u043e\u0448\u0435\u043d\u043d\u0443\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043c <code>reject<\/code>, \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 <code>throw<\/code>.<\/p>\n<p>  \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439, \u043a\u0430\u043a <a href=\"https:\/\/github.com\/kriskowal\/q\">Q<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/github.com\/tildeio\/rsvp.js\">RSVP<\/a>. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 <a href=\"http:\/\/promisesaplus.com\/\">Promises\/A+<\/a>, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u0441\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u0430 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <code>.then<\/code> (\u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u043f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438).<\/p>\n<p>  \u0418 \u0432\u043e\u0442, \u0434\u0430\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0432 ECMAScript 6 \u0431\u044b\u043b\u0430 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Promise\">\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439<\/a>, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c Promises\/A+ \u0438 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c. \u041e\u0441\u043e\u0431\u043e \u0438\u0445 \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438 \u043c\u043e\u0436\u043d\u043e <a href=\"http:\/\/www.html5rocks.com\/en\/tutorials\/es6\/promises\/\">\u0437\u0434\u0435\u0441\u044c<\/a> (<a href=\"http:\/\/habrahabr.ru\/post\/209662\/\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434, \u043d\u043e \u0441\u043b\u0435\u0433\u043a\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u043b<\/a>), <a href=\"http:\/\/www.2ality.com\/2014\/10\/es6-promises-api.html\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438\u043b\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/242767\/\">\u0437\u0434\u0435\u0441\u044c<\/a>. ES6 Promise \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 v8 \u0438 Firefox, \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b \u2014 <a href=\"https:\/\/github.com\/jakearchibald\/es6-promise\">es6-promise<\/a> \u0438 <a href=\"https:\/\/github.com\/getify\/native-promise-only\">native-promise-only<\/a>.<\/p>\n<p>  <a name=\"es6-promise-constructor\"><\/a><a href=\"#es6-promise-constructor\"><b>#<\/b><\/a> \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439 \u0438\u0437 ECMAScript 6 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>Promise<\/code>, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f 2 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435, \u0432\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u041a\u0440\u043e\u043c\u0435 <code>then<\/code>, \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f ES6 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043c\u0435\u0442\u043e\u0434 <code>catch<\/code> \u2014 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0434\u043b\u044f <code>then<\/code> \u0441 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0443. <a href=\"http:\/\/goo.gl\/z3bXC8\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var log = console.log.bind(console); function sleepRandom(time){   return new Promise(function(resolve, reject){     \/\/ resolve \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, reject - \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439     \/\/ \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f     setTimeout(resolve, time * 1e3, 0 | Math.random() * 1e3);   }); }  log('\u041f\u043e\u0435\u0445\u0430\u043b\u0438');                \/\/ =&gt; \u041f\u043e\u0435\u0445\u0430\u043b\u0438 sleepRandom(5).then(function(result){   log(result);                 \/\/ =&gt; 869, \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a.   return sleepRandom(10); }).then(function(result){   log(result);                 \/\/ =&gt; 202, \u0447\u0435\u0440\u0435\u0437 10 \u0441\u0435\u043a.  }).then(function(){   log('\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e'); \/\/ =&gt; \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e   throw Error('\u0410\u0448\u044b\u043f\u043a\u0430!'); }).then(function(){   log('\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e - \u043e\u0448\u0438\u0431\u043a\u0430'); }).catch(log);                 \/\/ =&gt; Error: '\u0410\u0448\u044b\u043f\u043a\u0430!' <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439 \u043f\u043e\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442, \u044f\u0434\u0440\u043e \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0439 <b>core.js<\/b> \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 native-promise-only, \u043e\u0442 \u043a\u043e\u0434\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>process.nextTick<\/code> \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0437 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0430 <a href=\"#immediate\"># setImmediate<\/a>.<\/p>\n<p>  <a name=\"es6-promise-resolve-reject\"><\/a><a href=\"#es6-promise-resolve-reject\"><b>#<\/b><\/a> \u041f\u0430\u0440\u0430 \u0445\u0435\u043b\u043f\u0435\u0440\u043e\u0432 <code>Promise.resolve<\/code> \u0438 <code>Promise.reject<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043b\u0438 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0415\u0441\u043b\u0438 <code>Promise.resolve<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u2014 \u0435\u0433\u043e \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442. \u0422\u0430\u043a\u0436\u0435 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 thenable (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, jQuery Deferred) \u0432 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f, \u0432 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u2014 <code>Promise.cast<\/code>. <a href=\"http:\/\/goo.gl\/vr8TN3\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">Promise.resolve(42).then(log); \/\/ =&gt; 42 Promise.reject(42).catch(log); \/\/ =&gt; 42  Promise.resolve($.getJSON('\/data.json')); \/\/ =&gt; ES6 promise <\/code><\/pre>\n<p>  <a name=\"es6-promise-all\"><\/a><a href=\"#es6-promise-all\"><b>#<\/b><\/a> \u0425\u0435\u043b\u043f\u0435\u0440 <code>Promise.all<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u0441\u044f \u0432\u0441\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u0438\u0437 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0439 \u0435\u043c\u0443 <a href=\"#es6-iterators\"># \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0439<\/a> \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 (\u0432 v8 \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u0442\u0430\u043b \u2014 \u043d\u0435 \u0432\u0438\u0436\u0443 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u0447\u0435\u043c-\u0442\u043e \u0435\u0449\u0451). \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f\u043c\u0438, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043a \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f\u043c \u0447\u0435\u0440\u0435\u0437 <code>Promise.resolve<\/code>. <a href=\"http:\/\/goo.gl\/62OcTx\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">Promise.all([   'foo',   sleepRandom(5),   sleepRandom(15),   sleepRandom(10)  \/\/ \u0447\u0435\u0440\u0435\u0437 15 \u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 ]).then(log);      \/\/ =&gt; ['foo', 956, 85, 382] <\/code><\/pre>\n<p>  <a name=\"es6-promise-race\"><\/a><a href=\"#es6-promise-race\"><b>#<\/b><\/a> \u0425\u0435\u043b\u043f\u0435\u0440 <code>Promise.race<\/code> \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439, \u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0438\u0437 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0439 \u0435\u043c\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u041f\u043e \u043c\u043e\u0435\u043c\u0443 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>Promise.all<\/code>, \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0447\u0443\u0442\u044c \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f. <a href=\"http:\/\/goo.gl\/L8ovkJ\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">function timeLimit(promise, time){   return Promise.race([promise, new Promise(function(resolve, reject){     setTimeout(reject, time * 1e3, Error('Await &gt; ' + time + ' sec'));   })]); }  timeLimit(sleepRandom(5), 10).then(log);   \/\/ =&gt; \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 853 timeLimit(sleepRandom(15), 10).catch(log); \/\/ Error: Await &gt; 10 sec <\/code><\/pre>\n<p>  <a name=\"async-await\"><\/a><a href=\"#async-await\"><b>#<\/b><\/a> \u0414\u0430\u0436\u0435 \u0441 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f\u043c\u0438, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c\u0443 JavaScript \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043a\u0443\u0434\u0430 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043b\u0430\u043d\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 ECMAScript 7 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u044b <a href=\"https:\/\/github.com\/lukehoban\/ecmascript-asyncawait\">\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/a>, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 <code>async \/ await<\/code> \u0438 \u0431\u0430\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 <a href=\"#es6-generators\"># \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445<\/a>, \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f\u0445 \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0445 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \ud83d\ude42 \u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0443\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 <b>Traceur<\/b>, \u0438 <b>6to5<\/b>. <a href=\"http:\/\/goo.gl\/9ByqLj\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var delay = time =&gt; new Promise(resolve =&gt; setTimeout(resolve, time));  async function sleepRandom(time){   await delay(time * 1e3);   return 0 | Math.random() * 1e3; } async function sleepError(time, msg){   await delay(time * 1e3);   throw Error(msg); }  (async () =&gt; {   try {     log('\u041f\u043e\u0435\u0445\u0430\u043b\u0438');            \/\/ =&gt; \u041f\u043e\u0435\u0445\u0430\u043b\u0438     log(await sleepRandom(5)); \/\/ =&gt; 936, \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a.     var [a, b, c] = await Promise.all([       sleepRandom(5),       sleepRandom(15),       sleepRandom(10)     ]);     log(a, b, c);              \/\/ =&gt; 210 445 71, \u0447\u0435\u0440\u0435\u0437 15 \u0441\u0435\u043a.     await sleepError(5, '\u0410\u0448\u044b\u043f\u043a\u0430!');     log('\u041d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e');   } catch(e){     log(e);                    \/\/ =&gt; Error: '\u0410\u0448\u044b\u043f\u043a\u0430!', \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a.   } })(); <\/code><\/pre>\n<p>  \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e API JavaScript. \u0423\u0436\u0435 <a href=\"https:\/\/fetch.spec.whatwg.org\/#fetch-api\">\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0430<\/a> (<a href=\"https:\/\/github.com\/github\/fetch\">\u043f\u043e\u043b\u0438\u0444\u0438\u043b<\/a>) \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>fetch<\/code> \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 <code>XMLHttpRequest<\/code>, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435. <a href=\"https:\/\/esdiscuss.org\/topic\/promise-returning-delay-function\">\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442<\/a> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0438, \u0434\u0443\u043c\u0430\u044e, \u0434\u043e\u0431\u0430\u0432\u044f\u0442, \u043f\u0440\u043e\u0441\u0442\u0443\u044e, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e, \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>delay<\/code>, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0443\u044e \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u2014 \u043f\u0440\u043e\u0449\u0430\u0439, <code>setTimeout<\/code>. \u041f\u043e\u0436\u0430\u043b\u0443\u0439, <code>delay<\/code> \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0432 \u0434\u0430\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443.<\/p>\n<p>  <a name=\"array-generics\"><\/a><\/p>\n<h2><b><a href=\"#array-generics\">#<\/a> Mozilla JavaScript: \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/b><\/h2>\n<hr\/>\n<p>  \u0412\u044b\u0448\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043e\u0431\u0445\u043e\u0434\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0432 JavaScript. \u0415\u0441\u0442\u044c \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0434\u0440\u0435\u0432\u043d\u0438\u0439. \u042d\u0442\u043e array-like \u043e\u0431\u044a\u0435\u043a\u0442\u044b.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0432 JavaScript \u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0438\u043c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f. \u042d\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u0430\u043a \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u043b\u0438\u043d\u0443 <code>.length<\/code> \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u043a\u043b\u044e\u0447\u0443 [\u043e\u0442 0 \u0434\u043e <code>.length<\/code>), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u044b \u2014 \u0442\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u00ab\u0434\u044b\u0440\u043a\u0438\u00bb. \u041e\u043d\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 <code>Array.prototype<\/code>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u042d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 <code>arguments<\/code>, \u0441\u0442\u0440\u043e\u043a\u0438 (\u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u2014 IE8+), \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b (\u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u043d\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 <code>Array.prototype<\/code>), \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 DOM, jQuery \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0442.\u0434.<\/p>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u2014 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438 (\u043a\u0430\u043a \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 <a href=\"http:\/\/es5.javascript.ru\/x15.4.html#x15.4.4.5\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a> \u2014 \u00ab\u043d\u0430\u0440\u043e\u0447\u0438\u0442\u043e \u0440\u043e\u0434\u043e\u0432\u044b\u0435\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u0438). \u041e\u043d\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442, \u0447\u0442\u043e \u0431\u044b \u043e\u0431\u044a\u0435\u043a\u0442, \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c, \u0431\u044b\u043b \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c. <a href=\"http:\/\/www.2ality.com\/2012\/02\/concat-not-generic.html\">\u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e <code>.concat<\/code> \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c.<\/a> \u0414\u0443\u043c\u0430\u044e, \u043c\u043d\u043e\u0433\u0438\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"javascript\">Array.prototype.slice.call(arguments, 1); \/\/ \u0438\u043b\u0438 [].slice.call(arguments, 1); <\/code><\/pre>\n<p>  \u0413\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e \u0438 \u043d\u0435\u0432\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>  ECMAScript 6 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <a href=\"#es6-array-from\"># <code>Array.from<\/code><\/a>, \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0438 array-like \u043e\u0431\u044a\u0435\u043a\u0442\u044b.<\/p>\n<pre><code class=\"javascript\">Array.from(arguments).slice(1); <\/code><\/pre>\n<p>  \u0412\u0440\u043e\u0434\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e <a href=\"http:\/\/jsperf.com\/array-methods-on-array-like\">\u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0434\u0451\u0448\u0435\u0432\u043e<\/a> \u2014 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443, \u043f\u0440\u0438\u0442\u043e\u043c, \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>  \u0412 JavaScript \u043e\u0442 Mozilla, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/New_in_JavaScript\/1.6\">\u0432 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 1.6<\/a> \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432 Firefox, \u0435\u0449\u0435 \u0432 2005 \u0433\u043e\u0434\u0443, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0432\u043e\u0448\u0435\u0434\u0448\u0438\u043c\u0438 \u0432 ECMAScript 5, \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0438 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array#Array_generic_methods\">\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/a>. \u041d\u0438 \u0432 5\u044e, \u043d\u0438 \u0432 6\u044e \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044e ECMAScript \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0438, \u0445\u043e\u0442\u044c \u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0432\u0435\u0442\u043a\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=strawman:array_statics\">Strawman<\/a> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e, \u043d\u043e \u044f \u043b\u0438\u0447\u043d\u043e \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043d\u0430 \u0438\u0445 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 ECMAScript. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u0438\u0445 \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e, \u0430 \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432 \u043e\u0433\u043d\u0435\u043b\u0438\u0441\u0435 \u2014 \u043e\u0442\u043d\u0435\u0441\u0435\u043c \u0438\u0445 \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439, \u0430 \u043d\u0435 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043e\u0432.<\/p>\n<pre><code class=\"javascript\">Array.slice(arguments, 1);  Array.join('abcdef', '+'); \/\/ =&gt; 'a+b+c+d+e+f'  var form = document.getElementsByClassName('form__input'); Array.reduce(form, function(memo, it){   memo[it.name] = it.value;   return memo;  }, {}); \/\/ =&gt; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, {name: '\u0412\u0430\u0441\u044f', age: '42', sex: 'yes, please'} <\/code><\/pre>\n<p>  <a name=\"schedule\"><\/a><\/p>\n<h2><b><a href=\"#schedule\">#<\/a> \u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435: setTimeout, setInterval, setImmediate<\/b><\/h2>\n<hr\/>\n<p>  <a name=\"timeout-interval\"><\/a><\/p>\n<h4><b><a href=\"#timeout-interval\">#<\/a> setTimeout, setInterval<\/b><\/h4>\n<p>  \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0432\u0441\u0435\u043c <code>setTimeout<\/code> \u0438 <code>setInterval<\/code>. \u041c\u043d\u043e\u0433\u0438\u0435 \u043d\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 (<a href=\"http:\/\/www.w3.org\/TR\/html5\/webappapis.html#timers\">W3C<\/a>, <a href=\"http:\/\/www.whatwg.org\/specs\/web-apps\/current-work\/multipage\/timers.html#timers\">WHATWG<\/a>) \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0440\u043e\u043c\u0435 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043b\u043b\u0431\u044d\u043a. \u041d\u043e \u0442\u0443\u0442, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 IE. \u0412 IE9- <code>setTimeout<\/code> \u0438 <code>setInterval<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430, \u044d\u0442\u043e \u043b\u0435\u0447\u0438\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u0447\u0435\u043a.<\/p>\n<pre><code class=\"javascript\">\/\/ \u0411\u044b\u043b\u043e: setTimeout(log.bind(null, 42), 1000); \/\/ \u0421\u0442\u0430\u043b\u043e: setTimeout(log, 1000, 42); <\/code><\/pre>\n<p>  <a name=\"immediate\"><\/a><\/p>\n<h4><b><a href=\"#immediate\">#<\/a> setImmediate<\/b><\/h4>\n<p>  JavaScript \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u0435\u043d \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e. \u041b\u044e\u0431\u044b\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u044f\u0436\u0435\u043b\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u043e\u0434\u0432\u0435\u0441\u044f\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u2014 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0442\u044f\u0436\u0435\u043b\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 \u043b\u0451\u0433\u043a\u0438\u0435 \u043f\u043e\u0434\u0437\u0430\u0434\u0430\u0447\u0438, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0432\u0432\u043e\u0434 \/ \u0432\u044b\u0432\u043e\u0434.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432 JavaScript (\u043f\u043e\u043a\u0430) \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u0430\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f. \u041a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0440\u0430\u0437 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 <code>RangeError: Maximum call stack size exceeded<\/code>. \u042d\u0442\u043e \u0447\u0438\u0441\u043b\u043e, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0432\u0430\u0440\u044c\u0438\u0440\u0443\u0435\u0442 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043e\u0442\u0435\u043d \u0434\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447. \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430. \u041f\u0440\u0430\u0432\u0434\u0430, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043e\u0431\u044b\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0439. <\/p>\n<p>  \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>setTimeout<\/code> \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439, \u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0441\u043f\u0435\u0448\u043d\u043e. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 <code>setTimeout<\/code> \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u2014 4 \u043c\u0441, \u0430 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0438 \u0442\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0418\u0442\u043e\u0433\u043e, \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c, ~250 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ~64 \u0432 IE8. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c, \u0434\u0430 \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u0438\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0430 Node.js \u0431\u044b\u043b <code>process.nextTick<\/code>, \u0442\u043e \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0448\u043b\u0430 \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0435 \u0436\u0434\u0430\u043b\u0438. \u0412 IE10 Microsoft \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window.setImmediate\">setImmediate<\/a>, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0430\u0447\u0443, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0432\u043e\u0434 \/ \u0432\u044b\u0432\u043e\u0434, \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u0435\u0433\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/dvcs.w3.org\/hg\/webperf\/raw-file\/tip\/specs\/setImmediate\/Overview.html\">W3C<\/a>. \u041f\u043e\u0437\u0436\u0435 \u043e\u043d <a href=\"http:\/\/habrahabr.ru\/post\/172363\/\">\u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438 \u043d\u0430 Node.js<\/a>. FF \u0438 Chromium \u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435 \u0441\u043f\u0435\u0448\u0430\u0442. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d <a href=\"https:\/\/github.com\/YuzuJS\/setImmediate\">\u0442\u0430\u043a\u043e\u0439<\/a> \u043f\u043e\u043b\u0438\u0444\u0438\u043b.<\/p>\n<p>  \u0421\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u0438\u0435 (\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0430). \u042d\u0442\u043e:<\/p>\n<ul>\n<li>\u0414\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Node.js \u2014 <code>process.nextTick<\/code><\/li>\n<li>\u0414\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u2014 <code>postMessage<\/code><\/li>\n<li>\u0414\u043b\u044f WebWorker&#8217;\u043e\u0432 \u2014 <code>MessageChannel<\/code><\/li>\n<li>\u0414\u043b\u044f IE8- \u2014 <code>script.onreadystatechange<\/code><\/li>\n<li>\u0418 \u0443\u0436 \u0435\u0441\u043b\u0438 \u044d\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u2014 <code>setTimeout<\/code> \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"javascript\">setImmediate(function(arg1, arg2){   console.log(arg1, arg2); \/\/ =&gt; \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 }, '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e', '\u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439');  clearImmediate(setImmediate(function(){   console.log('\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e'); })); <\/code><\/pre>\n<p>  \u041a\u0440\u043e\u043c\u0435 <code>setImmediate<\/code>, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u2014 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f <code>asap<\/code> (as soon as possible, <a href=\"https:\/\/github.com\/kriskowal\/asap\">\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/a>) \u2014 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0441\u043e\u0437\u0434\u0430\u0451\u043c microtask, \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0434\u043e \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \/ \u0432\u044b\u0432\u043e\u0434\u0430. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u044f\u0437\u044b\u043a\u0430 <a href=\"https:\/\/github.com\/rwaldron\/tc39-notes\/blob\/master\/es6\/2014-09\/sept-25.md#510-globalasap-for-enqueuing-a-microtask\">\u0434\u0443\u043c\u0430\u044e\u0442 \u0438 \u0432 tc39<\/a>. \u041c\u043e\u0436\u0435\u0442 \u0438 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443?<\/p>\n<p>  <a name=\"console\"><\/a><\/p>\n<h2><b><a href=\"#console\">#<\/a> \u041a\u043e\u043d\u0441\u043e\u043b\u044c<\/b><\/h2>\n<hr\/>\n<p>  <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/console\">\u041a\u043e\u043d\u0441\u043e\u043b\u044c<\/a> \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043a\u0430\u043a \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 ECMAScript \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u0415\u0441\u0442\u044c \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 <a href=\"https:\/\/github.com\/DeveloperToolsWG\/console-object\">\u043d\u0430\u0431\u0440\u043e\u0441\u043a\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a>, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <a name=\"console-cap\"><\/a><a href=\"#console-cap\"><b>#<\/b><\/a> \u0412 IE7- \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0423 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u00ab\u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430\u00bb \u2014 <code>console<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430 \u043d\u0435\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442. \u041d\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445. \u0421\u0432\u043e\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0432 \u0441\u0442\u0438\u043b\u0435 <a href=\"http:\/\/getfirebug.com\/firebuglite\">Firebug Lite<\/a> \u043c\u044b \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438 \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0434\u0430\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u044f.<\/p>\n<pre><code class=\"javascript\">\/\/ \u0411\u044b\u043b\u043e: if(window.console && console.log)console.log(42); \/\/ \u0421\u0442\u0430\u043b\u043e: console.log(42); <\/code><\/pre>\n<p>  <a name=\"console-bind\"><\/a><a href=\"#console-bind\"><b>#<\/b><\/a> \u0412 Firefox \u0438 Chromium \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 <code>console<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"#es5-bind\"># <code>console.log.bind(console)<\/code><\/a>. \u0412 IE, Firebug \u0438 \u043d\u0430 Node.js \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c, \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0439. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u0438\u0432\u044f\u0436\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u044b \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 <code>console<\/code>.<\/p>\n<pre><code class=\"javascript\">\/\/ \u0411\u044b\u043b\u043e: setTimeout(console.log.bind(console, 42), 1000); [1, 2, 3].forEach(console.log, console); \/\/ \u0421\u0442\u0430\u043b\u043e: setTimeout(console.log, 1000, 42); [1, 2, 3].forEach(console.log); <\/code><\/pre>\n<p>  \u041d\u043e \u0435\u0441\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0438 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445, \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u0441\u0442\u0440\u043e\u043a\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u044b\u043b \u0432\u044b\u0437\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434. \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 <b>\u0441ore.js<\/b>. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e \u2014 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0431\u0435\u0437 \u043c\u043e\u0434\u0443\u043b\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u0438.<\/p>\n<h4><b>\u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u0441\u0435\u0431\u044f\u0442\u0438\u043d\u044b:<\/b><\/h4>\n<p>  <a name=\"console-disable\"><\/a><a href=\"#console-disable\"><b>#<\/b><\/a> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043a\u043e\u0434\u0435, \u0443\u0434\u0430\u043b\u044f\u044f \u0438\u0445 \u043b\u0438\u0431\u043e \u0440\u0443\u0447\u043a\u0430\u043c\u0438, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"http:\/\/www.elijahmanor.com\/grunt-away-those-pesky-console-log-statements\/\">\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430<\/a>, \u043d\u043e \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<pre><code class=\"javascript\">console.disable(); console.warn('\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0432\u044b \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.'); console.enable(); console.warn('\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u043d\u043e\u0432\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430.'); <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/116852\/\">\u044d\u0442\u043e\u0439<\/a> \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043e\u0442 <a href=\"http:\/\/habrahabr.ru\/users\/theshock\/\" class=\"user_link\">TheShock<\/a>.<\/p>\n<p>  <a name=\"console-shortcut\"><\/a><a href=\"#console-shortcut\"><b>#<\/b><\/a> \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u044b\u043c \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>console.log<\/code> \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0430\u0441\u043e\u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043d\u0430\u0434\u043e\u0435\u0434\u0430\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0420\u0430\u0437 \u043e\u0431\u044a\u0435\u043a\u0442 <code>console<\/code> \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u0438 \u043c\u044b \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0430\u043c \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c <code>console.log<\/code>?<\/p>\n<pre><code class=\"javascript\">console('\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e console.log'); \/\/ \u0411\u044b\u043b\u043e: setTimeout(console.log.bind(console, 42), 1000); \/\/ \u0421\u0442\u0430\u043b\u043e: setTimeout(console, 1000, 42); <\/code><\/pre>\n<p>  \u041d\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c, \u043f\u043e \u0438\u0434\u0435\u0435, \u043c\u0435\u0441\u0442\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043d\u0435\u0439.<\/p>\n<p>  <a name=\"II\"><\/a><\/p>\n<h1><b><a href=\"#II\">#<\/a> \u0427\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f: \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b<\/b><\/h1>\n<hr\/>\n<blockquote><p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u043e\u043b\u044c, \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0435\u0442.<br \/>  \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u043c\u0438\u0440\u0430 \u2014 \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u043d\u0430 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434.<br \/>  <i><b>\u2014 \u041f\u0435\u0442\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u0440\u0430\u0441\u0442\u0438\u044f<\/b><\/i><\/p><\/blockquote>\n<p>  \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b, \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \/ \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u2014 \u0432\u0435\u0441\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u043e, \u0447\u0435\u0433\u043e, \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u044f\u0437\u044b\u043a\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u0441\u0435\u043c \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c. \u0421\u044e\u0434\u0430 \u0436\u0435 \u043e\u0442\u043d\u0435\u0441\u0451\u043c \u0438 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0432 ES7+, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e.<\/p>\n<p>  <a name=\"classify\"><\/a><\/p>\n<h2><b><a href=\"#classify\">#<\/a> \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/b><\/h2>\n<hr\/>\n<p>  <a name=\"is-object\"><\/a><a href=\"#is-object\"><b>#<\/b><\/a> \u0422\u0443\u0442 \u043d\u0430\u0447\u043d\u0435\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u0441 \u0431\u0430\u043d\u0430\u043b\u044c\u0449\u0438\u043d\u044b. \u0412 JavaScript \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 ECMAScript 5 \u0435\u0441\u0442\u044c <a href=\"http:\/\/es5.javascript.ru\/x8.html#x8\">6 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>: <code>Undefined, Null, Boolean, String, Number<\/code> \u0438 <code>Object<\/code>. ECMAScript 6 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 <a href=\"#es6-symbol\"># <code>Symbol<\/code><\/a>. \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>typeof<\/code>. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e. \u0422\u0430\u043a \u0443\u0436 <a href=\"http:\/\/habrahabr.ru\/post\/200664\/\">\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c<\/a>, \u0447\u0442\u043e <code>typeof null<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>'object'<\/code> \u0438 <a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=harmony:typeof_null\">\u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/a> \u044d\u0442\u043e \u0432 Harmony \u0443\u0441\u043f\u0435\u0445\u043e\u043c \u043d\u0435 \u0443\u0432\u0435\u043d\u0447\u0430\u043b\u0430\u0441\u044c. \u0414\u043b\u044f \u0442\u0438\u043f\u0430 <code>Object<\/code> <code>typeof<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043b\u0438\u0431\u043e <code>'object'<\/code>, \u043b\u0438\u0431\u043e <code>'function'<\/code>, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <code>[[Call]]<\/code>. \u0418\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>typeof<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432, \u0438 \u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0445.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>null<\/code> \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0435\u0451 \u0441 \u043d\u0438\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c, \u0442\u043e \u0441 <code>Object<\/code> \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0442\u043d\u0438 \u043a\u043e\u0434\u0430, \u043b\u0438\u0431\u043e \u0445\u0435\u043b\u043f\u0435\u0440. \u041c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a \u2014 <code>Object(foo) === foo<\/code>, \u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 <a href=\"http:\/\/jsperf.com\/core-js-isobject\">\u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0435<\/a> \u2014 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443. \u0412 \u0440\u0430\u043d\u043d\u0438\u0445 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430\u0445 ES6 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434 <code>Object.isObject<\/code>, \u043d\u043e, \u0432\u0438\u0434\u0438\u043c\u043e, \u0438\u0437-\u0437\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c <code>typeof null<\/code>, \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0435\u043d. \u0410 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e. \u0422\u0430\u043a \u0447\u0442\u043e <b>\u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0445\u0435\u043b\u043f\u0435\u0440 <code>Object.isObject<\/code><\/b>, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0449\u0435 \u043d\u0435\u043a\u0443\u0434\u0430 (<a href=\"http:\/\/goo.gl\/CIkM2P\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">Object.isObject = function(it){   return it != null && (typeof it == 'object' || typeof it == 'function'); } \/\/ ... typeof {};              \/\/ =&gt; 'object' typeof isNaN;           \/\/ =&gt; 'function' typeof null;            \/\/ =&gt; 'object'  Object.isObject({});    \/\/ =&gt; true Object.isObject(isNaN); \/\/ =&gt; true Object.isObject(null);  \/\/ =&gt; false <\/code><\/pre>\n<p>  <a name=\"classof\"><\/a><a href=\"#classof\"><b>#<\/b><\/a> \u0410 \u0432\u043e\u0442 \u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>instanceof<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432. \u0415\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 <code>Function.prototype<\/code>, \u044d\u0442\u043e \u0435\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 <code>constructor<\/code> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0430 <code>constructor.name<\/code> \u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u043f\u0440\u0438 \u0441\u0436\u0430\u0442\u0438\u0438 \u043a\u043e\u0434\u0430, \u0435\u0449\u0435 \u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f IE. \u041f\u043e\u043c\u043e\u0447\u044c \u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>[[Class]]<\/code>. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0434\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430\u0440\u0443\u0436\u0443 \u2014 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u043c\u043d\u043e\u0433\u0438\u043c \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>Object.prototype.toString.call(foo).slice(8, -1)<\/code>. <a href=\"http:\/\/goo.gl\/2pbqnZ\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">Object.prototype.toString.call(1).slice(8, -1);   \/\/ =&gt; 'Number' Object.prototype.toString.call([]).slice(8, -1);  \/\/ =&gt; 'Array' Object.prototype.toString.call(\/.\/).slice(8, -1); \/\/ =&gt; 'RegExp' <\/code><\/pre>\n<p>  \u041d\u0430 \u0431\u0430\u0437\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 \u043f\u043e \u0442\u0438\u043f\u0443 <a href=\"#es5-is-array\"># <code>Array.isArray<\/code><\/a>: Object.is<i>Type<\/i> \u0432 <a href=\"http:\/\/sugarjs.com\/api\/Object\/isType\">Sugar<\/a>, _.is<i>Type<\/i> \u0432 <a href=\"http:\/\/underscorejs.org\/#isArray\">Undescore<\/a> \u0438 \u0442.\u043f.<\/p>\n<p>  \u041c\u044b \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u0438\u043d\u0430\u0447\u0435 \u2014 <b>\u043e\u0434\u0438\u043d \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>Object.classof<\/code> \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/b>, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>typeof!<\/code> \u0438\u0437 <a href=\"http:\/\/livescript.net\/#operators-object\">LiveScript<\/a> (<a href=\"http:\/\/goo.gl\/BxwFTQ\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a>).<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 <code>Object.prototype.toString.call(foo).slice(8, -1)<\/code> \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c:  <\/p>\n<ul>\n<li>\u0412 \u0441\u0442\u0430\u0440\u044b\u0445 IE, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a <code>null, undefined<\/code> \u0438 <code>arguments<\/code>, \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>&quot;Object&quot;<\/code>. \u042d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u043b\u0435\u0447\u0438\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u043c\u0438.<\/li>\n<li>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0438\u0437 ECMAScript 6, \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435? \u0422\u0430\u043a \u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>&quot;Object&quot;<\/code>. \u0422\u0443\u0442 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 <a href=\"http:\/\/people.mozilla.org\/~jorendorff\/es6-draft.html#sec-object.prototype.tostring\">\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b<\/a> <code>Object#toString<\/code> \u0432 ECMAScript 6.<\/li>\n<\/ul>\n<p>  \u0412\u043d\u0435\u0437\u0430\u043f\u043d\u043e, \u043d\u043e \u0432 ECMAScript 6 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u043e\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u0430\u043a <code>[[Class]]<\/code>. <code>Object#toString<\/code> ES6, \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043a <code>Undefined, Null, Array, String, Arguments, Function, Error, Boolean, Number, Date<\/code> \u0438\u043b\u0438 <code>RegExp<\/code>, \u0430 \u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0449\u0435\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u043f\u043e <a href=\"#es6-symbol\"># \u0441\u0438\u043c\u0432\u043e\u043b\u0443<\/a> <b><code>Symbol.toStringTag<\/code><\/b>. \u0415\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u0438 \u043e\u043d\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0435\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u00ab\u043a\u043b\u0430\u0441\u0441\u043e\u0432\u00bb \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0451, \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u2014 <code>Object<\/code>.<\/p>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b <code>Object#toString<\/code>, \u0431\u043b\u0430\u0433\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <a href=\"#es5-keys\"># \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c\u0443, \u043d\u043e \u0432\u0435\u0441\u0435\u043b\u043e\u043c\u0443, \u0431\u0430\u0433\u0443<\/a> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0438 \u0432 IE8-, \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c <code>for-in<\/code>. \u041d\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>Object.classof<\/code>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043e\u043d\u0443\u0441\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432. <a href=\"http:\/\/goo.gl\/M7qIFd\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var classof = Object.classof;  classof(null);                 \/\/ =&gt; 'Null' classof(undefined);            \/\/ =&gt; 'Undefined' classof(1);                    \/\/ =&gt; 'Number' classof(true);                 \/\/ =&gt; 'Boolean' classof('string');             \/\/ =&gt; 'String' classof(Symbol());             \/\/ =&gt; 'Symbol'  classof(new Number(1));        \/\/ =&gt; 'Number' classof(new Boolean(true));    \/\/ =&gt; 'Boolean' classof(new String('string')); \/\/ =&gt; 'String'  var fn   = function(){}   , list = (function(){return arguments})(1, 2, 3);  classof({});                   \/\/ =&gt; 'Object' classof(fn);                   \/\/ =&gt; 'Function' classof([]);                   \/\/ =&gt; 'Array' classof(list);                 \/\/ =&gt; 'Arguments' classof(\/.\/);                  \/\/ =&gt; 'RegExp' classof(new TypeError);        \/\/ =&gt; 'Error'  classof(new Set);              \/\/ =&gt; 'Set' classof(new Map);              \/\/ =&gt; 'Map' classof(new WeakSet);          \/\/ =&gt; 'WeakSet' classof(new WeakMap);          \/\/ =&gt; 'WeakMap' classof(new Promise(fn));      \/\/ =&gt; 'Promise'  classof([].values());          \/\/ =&gt; 'Array Iterator' classof(new Set().values());   \/\/ =&gt; 'Set Iterator' classof(new Map().values());   \/\/ =&gt; 'Map Iterator'  classof(Math);                 \/\/ =&gt; 'Math' classof(JSON);                 \/\/ =&gt; 'JSON'  function Example(){} Example.prototype[Symbol.toStringTag] = 'Example';  classof(new Example);          \/\/ =&gt; 'Example' <\/code><\/pre>\n<p>  <a name=\"dict\"><\/a><\/p>\n<h2><b><a href=\"#dict\">#<\/a> \u0421\u043b\u043e\u0432\u0430\u0440\u0438<\/b><\/h2>\n<hr\/>\n<p>  \u0412 JavaScript \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0438 (\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b) \u2014 \u043e\u0434\u043d\u043e. \u0412 \u044d\u0442\u043e\u043c \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u043f\u043b\u044e\u0441\u044b \u2014 \u044d\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c, \u043d\u0435 \u0437\u0440\u044f \u0442\u0430\u043a \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 JavaScript \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 <code>JSON<\/code>, \u0442\u0430\u043a \u0438 \u043c\u0438\u043d\u0443\u0441\u044b.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u043d\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430, \u0447\u0442\u043e, \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043f\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 (\u0430 \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u0442\u0430\u0446\u0438\u0435\u0439 \u2014 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438, \u044d\u0442\u043e <code>Object.prototype<\/code>), \u043b\u043e\u043c\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c. \u0414\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0436\u0435 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <code>Object.prototype<\/code>.<\/p>\n<p>  \u0412 ECMAScript 6 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f <a href=\"#es6-map\"># \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0432\u044b\u0448\u0435<\/a> \u043d\u043e\u0432\u044b\u0439 \u0432\u0438\u0434 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 <code>Map<\/code>. \u0415\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0430\u0436\u0435 \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u043d\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043e\u0432). \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0418\u041c\u0425\u041e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0438\u0445 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442. \u0423 <code>Map<\/code>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u043c, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434\u044b \u2014 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b\u0439. <code>Map<\/code>&#8216;\u044b \u0434\u0430\u043b\u0435\u043a\u0438 \u043e\u0442 \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0432\u0441\u0435\u043c\u0438 <code>JSON<\/code> \u0438 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b. \u0414\u0430 \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0432 \u043a\u043b\u044e\u0447\u0430\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<ul>\n<li><a href=\"#dict-and-object-prototype\"># \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: <code>Object.prototype<\/code> \u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0438<\/a><\/li>\n<li><a href=\"#dict-module\"># \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>Dict<\/code><\/a><\/li>\n<li><a href=\"#dict-safe-crud\"># \u041c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c, \u0438\u043c\u0435\u044e\u0449\u0438\u043c \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f<\/a><\/li>\n<li><a href=\"#dict-methods\"># \u041c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c<\/a><\/li>\n<li><a href=\"#dict-iter\"># \u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e<\/a><\/li>\n<li><a href=\"#dict-next\"># \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b<\/a><\/li>\n<\/ul>\n<p>  <a name=\"dict-and-object-prototype\"><\/a><\/p>\n<h4><b><a href=\"#dict-and-object-prototype\">#<\/a> \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: Object.prototype \u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0438<\/b><\/h4>\n<p>  \u0412 <code>Object.prototype<\/code>, \u043a\u0430\u043a \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/prototype\">Mozilla Developer Network<\/a>, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"javascript\">Object.prototype.constructor(); Object.prototype.hasOwnProperty(); Object.prototype.isPrototypeOf(); Object.prototype.propertyIsEnumerable(); Object.prototype.toLocaleString(); Object.prototype.toString(); Object.prototype.valueOf(); Object.prototype.__proto__; Object.prototype.__count__; Object.prototype.__parent__; Object.prototype.__noSuchMethod__; Object.prototype.__defineGetter__(); Object.prototype.__defineSetter__(); Object.prototype.__lookupGetter__(); Object.prototype.__lookupSetter__(); Object.prototype.eval(); Object.prototype.toSource(); Object.prototype.unwatch(); Object.prototype.watch(); <\/code><\/pre>\n<p>  \u0427\u0435\u043c \u044d\u0442\u043e \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0433\u0440\u043e\u0437\u0438\u0442\u044c?<\/p>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0435\u0433\u043e API:<\/p>\n<pre><code class=\"javascript\">var phone = (function(){   var db = {     '\u0412\u0430\u0441\u044f': '+7987654',     '\u041f\u0435\u0442\u044f': '+7654321'   };   return {     has: function(name){       return name in db;     },     get: function(name){       return db[name];     },     set: function(name, phone){       db[name] = phone;     },     delete: function(name){       delete db[name];     }   }; })(); <\/code><\/pre>\n<p>  <a href=\"http:\/\/goo.gl\/1fJAhL\">\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c<\/a>:<\/p>\n<pre><code class=\"javascript\">console(phone.has('\u0412\u0430\u0441\u044f'));     \/\/ =&gt; true console(phone.get('\u0412\u0430\u0441\u044f'));     \/\/ =&gt; '+7987654' console(phone.has('\u0414\u0438\u043c\u0430'));     \/\/ =&gt; false console(phone.get('\u0414\u0438\u043c\u0430'));     \/\/ =&gt; undefined console(phone.has('toString')); \/\/ =&gt; true console(phone.get('toString')); \/\/ =&gt; function toString() { [native code] } <\/code><\/pre>\n<p>  \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438, \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432, <code>in<\/code> \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \/ \u0437\u0430\u043c\u0435\u043d\u0438\u043c <code>in<\/code> \u043d\u0430 \u043c\u0435\u0442\u043e\u0434 <code>hasOwnProperty<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0439 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432. <a href=\"http:\/\/goo.gl\/IvQUWE\">\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c<\/a>:<\/p>\n<pre><code class=\"javascript\">\/\/ ...     has: function(name){       return db.hasOwnProperty(name);     },     get: function(name){       if(db.hasOwnProperty(name))return db[name];     }, \/\/ ... console(phone.get('\u0412\u0430\u0441\u044f'));              \/\/ =&gt; '+7987654' phone.set('hasOwnProperty', '+7666666'); \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u043e\u0433\u043e &quot;\u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430&quot; console(phone.get('\u0412\u0430\u0441\u044f'));              \/\/ TypeError: string is not a function <\/code><\/pre>\n<p>  \u0423\u0436\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u00ab\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435. \u041c\u0435\u0442\u043e\u0434\u044b \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044c. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>hasOwnProperty<\/code>, \u043e\u0442\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0438\u0445 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a. <a href=\"http:\/\/goo.gl\/FEKzNd\">\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0442\u0440\u044d\u0448<\/a>:<\/p>\n<pre><code class=\"javascript\">\/\/ ...     has: function(name){       return Object.prototype.hasOwnProperty.call(db, name);     },     get: function(name){       if(Object.prototype.hasOwnProperty.call(db, name))return db[name];     }, \/\/ ... <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0441\u044f \u0431\u044b <a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=strawman:has_operator\">\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/a>, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 <code>in<\/code>.<\/p>\n<p>  \u0412\u044b \u0443\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c? <a href=\"http:\/\/goo.gl\/yZfzuz\">\u041d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e<\/a>:<\/p>\n<pre><code class=\"javascript\">phone.set('__proto__', '+7666666'); \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u043e\u0433\u043e &quot;\u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430&quot; console(phone.get('__proto__'));    \/\/ =&gt; undefined <\/code><\/pre>\n<p>  \u0412 <code>Object.prototype<\/code> \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0438 \u00ab\u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439\u00bb \u0433\u0435\u0442\u0442\u0435\u0440 \/ \u0441\u0435\u0442\u0442\u0435\u0440 <code>__proto__<\/code>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443 \u0431\u0443\u0434\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u2014 \u043f\u043e\u0432\u0440\u0435\u0434\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043e\u0431\u0445\u043e\u0434\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432. \u0412 \u0441\u0442\u0430\u0440\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u0430\u0445 \u0431\u044b\u043b\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u00ab\u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435\u00bb \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430. \u0422\u0443\u0442 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e <code>Object.defineProperty<\/code> (<a href=\"http:\/\/goo.gl\/qigN0B\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u043a\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">\/\/ ...     set: function(name, phone){       Object.defineProperty(db, name, {         enumerable  : true,         configurable: true,         writable    : true,         value       : phone       });     }, \/\/ ... <\/code><\/pre>\n<p>  \u041f\u0440\u043e \u043e\u0431\u0445\u043e\u0434 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u043e\u0441\u043e\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u2014 \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043b\u043e\u0445\u043e, \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 \u043f\u0435\u0440\u0435\u0447\u0435\u0441\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043f\u0440\u0438 \u043e\u0431\u0445\u043e\u0434\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0447\u0435\u0440\u0435\u0437 <code>for-in<\/code> \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 <code>hasOwnProperty<\/code>. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0433 \u0441 <a name=\"es5-keys\"><\/a><a href=\"#es5-keys\"># \u00ab\u043d\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u043c\u0438\u00bb \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/a> \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0431\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 <code>for-in<\/code> \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <code>Object.prototype<\/code>, \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 IE.<\/p>\n<p>  \u0412 ECMAScript 5 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u2014 <code>Object.create(null)<\/code>, \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e (<a href=\"http:\/\/goo.gl\/gz3ZBZ\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">var phone = (function(){   var db = Object.create(null);   Object.assign(db, {     '\u0412\u0430\u0441\u044f': '+7987654',     '\u041f\u0435\u0442\u044f': '+7654321'   });   return {     has: function(name){       return name in db;     },     get: function(name){       return db[name];     },     set: function(name, phone){       db[name] = phone;     },     delete: function(name){       delete db[name];     }   }; })(); <\/code><\/pre>\n<p>  \u0412\u0441\u0451 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0434\u0430\u0436\u0435 \u0441 <code>Object.assign<\/code>, \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b.<\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b <code>toString<\/code> \u0438 <code>valueOf<\/code>. \u0427\u0435\u043c \u044d\u0442\u043e \u043d\u0430\u043c \u0433\u0440\u043e\u0437\u0438\u0442?  <\/p>\n<ul>\n<li>\u041d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0447\u0438\u0441\u043b\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>+Object.create(null)<\/code>, \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0435, <code>'' + Object.create(null)<\/code>, \u2014 <code>TypeError<\/code><\/li>\n<li>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>==<\/code>, \u0441 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438 \u2014 <code>TypeError<\/code><\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043a\u043e\u0433\u043e \u043a\u0430\u043a, \u0430 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u043b\u044e\u0441, \u0447\u0435\u043c \u043c\u0438\u043d\u0443\u0441.<\/p>\n<p>  <a name=\"dict-module\"><\/a><\/p>\n<h4><b><a href=\"#dict-module\">#<\/a> \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>Dict<\/code><\/b><\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0447\u0435\u0440\u0435\u0437 <code>Object.create(null)<\/code> \u0438 \u0435\u0433\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e, \u0447\u0435\u043c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0447\u0435\u0440\u0435\u0437 <code>{}<\/code>. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u0430\u043c\u044b\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u044f\u0437\u044b\u043a <a href=\"http:\/\/wiki.ecmascript.org\/doku.php?id=strawman:dicts\">\u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044f<\/a>, \u043d\u043e \u044d\u0442\u043e, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435, \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u043c. \u0415\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c <code>{__proto__: null, foo: 'bar'}<\/code>, \u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432\u0435\u0437\u0434\u0435, <a href=\"https:\/\/github.com\/petkaantonov\/bluebird\/wiki\/Optimization-killers#2-unsupported-syntax\">\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0434\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430<\/a>, \u0434\u0430 \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0430\u044f.<\/p>\n<p>  \u041e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u043e\u0441\u044c <a href=\"https:\/\/github.com\/rwaldron\/tc39-notes\/blob\/master\/es6\/2012-11\/nov-29.md#collection-apis-review\">\u043e\u0434\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a> \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c <b>\u00ab\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u00bb <code>Dict<\/code> \u043a\u0430\u043a \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 <code>Object.create(null)<\/code><\/b>. \u041a\u0430\u043a \u043e\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u043f\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u044f \u043d\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435. \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0432\u0437\u044f\u0442\u044c \u0435\u0433\u043e, \u0441\u043b\u0435\u0433\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0432? \u0417\u0430\u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u043a\u0430\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u043c\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <code>entries<\/code> \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0431\u0435\u0437 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u044d\u0442\u0430\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f <a href=\"#es6-array-from\"># <code>Array.from<\/code><\/a> \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439.<\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a <code>Dict() instanceof Dict<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438 <a href=\"#classof\"># <code>Object.classof(Dict())<\/code><\/a> \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>'Object'<\/code>, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u043c\u0435\u0442\u043e\u0434 <code>Dict.isDict<\/code>.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e <a href=\"http:\/\/goo.gl\/IuhgSc\">\u0432\u043e\u0442 \u0442\u0430\u043a<\/a>:<\/p>\n<pre><code class=\"javascript\">function Dict(props){   var dict = Object.create(null);   if(props != null){     if(Symbol.iterator in props){       for(var [key, val] of props)dict[key] = val;     } else Object.assign(dict, props);   }   return dict; } Dict.prototype = null; Dict.isDict = function(it){   return Object.isObject(it) && Object.getPrototypeOf(it) === null; }  \/\/ ...  var map = new Map([['a', 1], ['b', 2], ['c', 3]]);  Dict();                                            \/\/ =&gt; {__proto__: null} Dict({a: 1, b: 2, c: 3});                          \/\/ =&gt; {__proto__: null, a: 1, b: 2, c: 3} Dict(map);                                         \/\/ =&gt; {__proto__: null, a: 1, b: 2, c: 3} Dict([1, 2, 3].entries());                         \/\/ =&gt; {__proto__: null, 0: 1, 1: 2, 2: 3} Dict((for([k, v] of map)if(v % 2)[k + k, v * v])); \/\/ =&gt; {__proto__: null, aa: 1, cc: 9}  Dict.isDict({});     \/\/ =&gt; false Dict.isDict(Dict()); \/\/ =&gt; true <\/code><\/pre>\n<p>  <a name=\"dict-safe-crud\"><\/a><\/p>\n<h4><b><a href=\"#dict-safe-crud\">#<\/a> \u041c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c, \u0438\u043c\u0435\u044e\u0449\u0438\u043c \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f<\/b><\/h4>\n<p>  \u041d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u0436\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0438\u043c\u0435\u044e\u0449\u0438\u043c \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f, \u043a\u0430\u043a \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438.<\/p>\n<p>  <b><code>Dict.has<\/code><\/b> \u2014 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e, \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f <code>hasOwnProperty<\/code>. \u0412 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430\u0445 ECMAScript 6, \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 <code>Reflect<\/code> \u2014 \u043d\u0430\u0431\u043e\u0440\u0435 \u0437\u0430\u0433\u043b\u0443\u0448\u0435\u043a \u0434\u043b\u044f <code>Proxy<\/code>, \u0434\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 <code>hasOwnProperty<\/code> \u2014 \u043c\u0435\u0442\u043e\u0434 <code>Reflect.hasOwn<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0443\u0434\u0430\u043b\u0438\u043b\u0438.<\/p>\n<p>  <b><code>Dict.get<\/code><\/b> \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c. \u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c <code>undefined<\/code>.<\/p>\n<p>  <b><code>Dict.set<\/code><\/b> \u2014 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u043f\u0430\u0440\u0430\u043d\u043e\u0438\u043a\u043e\u0432. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044f, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e \u0441\u0435\u0442\u0442\u0435\u0440\u044b, \u0442\u0430\u043a\u0438\u0435, \u043a\u0430\u043a <code>__proto__<\/code>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>defineProperty<\/code>.<\/p>\n<p>  \u041d\u0443 \u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>delete<\/code> \u0438 \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0434\u043e.<\/p>\n<p>  <a href=\"http:\/\/goo.gl\/yXHvmR\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var dict = {a: 1, b: 2, c: 3};  console(Dict.has(dict, 'a'));         \/\/ =&gt; true console(Dict.has(dict, 'toString'));  \/\/ =&gt; false  console(Dict.get(dict, 'a'));         \/\/ =&gt; 1 console(Dict.get(dict, 'toString'));  \/\/ =&gt; undefined  Dict.set(dict, '__proto__', 42); console(Dict.get(dict, '__proto__')); \/\/ =&gt; 42 <\/code><\/pre>\n<p>  <a name=\"dict-methods\"><\/a><\/p>\n<h4><b><a href=\"#dict-methods\">#<\/a> \u041c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c<\/b><\/h4>\n<p>  \u041c\u0435\u0442\u043e\u0434\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 ECMAScript 5 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0434\u043b\u044f \u0435\u0433\u043e \u043e\u0431\u0445\u043e\u0434\u0430 (<code>forEach, map, some<\/code> \u0438 \u0442.\u043f.), \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b. \u0418\u0445 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445 \/ \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0410 \u0432\u043e\u0442 \u043f\u043e\u0434\u0432\u0438\u0436\u0435\u043a \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u0445 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043d\u0435\u0442.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f <code>Dict<\/code>. \u0422\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, \u043c\u0435\u0442\u043e\u0434\u044b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u044f\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u042d\u0442\u043e: <b><code>Dict.forEach, Dict.map, Dict.filter, Dict.some, Dict.every, Dict.find, Dict.findKey, Dict.keyOf, <\/code><a href=\"#array-contains\"># <code>Dict.contains<\/code><\/a><code>, Dict.reduce, <\/code><a href=\"#array-turn\"># <code>Dict.turn<\/code><\/a><\/b>. <code>Key<\/code> \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>index<\/code> \u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u00ab\u041f\u0440\u0430\u0432\u044b\u0435\u00bb \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442-\u0438\u043d\u0434\u0435\u043a\u0441 (\u043f\u043e\u043a\u0430?) \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u0435\u0437\u0434\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432. \u041f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u2014 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u043b\u0430\u043d\u0435, \u0447\u0442\u043e \u0438 <code>Array.from<\/code> \u0438\u043b\u0438 <code>Array.of<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Dict.map(dict, fn)<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 <code>Dict<\/code>, \u0430 <code>Dict.map.call(Object, dict, fn)<\/code> \u2014 \u043d\u043e\u0432\u044b\u0439 <code>Object<\/code>. \u0410 \u0432 \u043e\u0431\u0449\u0435\u043c, \u0432\u0441\u0451 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e, \u0441\u043a\u0443\u0447\u043d\u043e \u0438 \u043a\u0430\u043a \u0432\u0435\u0437\u0434\u0435 (<a href=\"http:\/\/goo.gl\/1BRJDx\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">var dict = {a: 1, b: 2, c: 3}; Dict.forEach(dict, console.log, console); \/\/ =&gt; 1, 'a', {a: 1, b: 2, c: 3} \/\/ =&gt; 2, 'b', {a: 1, b: 2, c: 3} \/\/ =&gt; 3, 'c', {a: 1, b: 2, c: 3} Dict.map(dict, function(it){   return it * it; }); \/\/ =&gt; {a: 1, b: 4, c: 9} Dict.filter(dict, function(it){   return it % 2; }); \/\/ =&gt; {a: 1, c: 3} Dict.some(dict, function(it){   return it === 2; }); \/\/ =&gt; true Dict.every(dict, function(it){   return it === 2; }); \/\/ =&gt; false Dict.find(dict, function(it){   return it &gt; 2; }); \/\/ =&gt; 3 Dict.find(dict, function(it){   return it &gt; 4; }); \/\/ =&gt; undefined Dict.findKey(dict, function(it){   return it &gt; 2; }); \/\/ =&gt; 'c' Dict.findKey(dict, function(it){   return it &gt; 4; }); \/\/ =&gt; undefined Dict.keyOf(dict, 2);    \/\/ =&gt; 'b' Dict.keyOf(dict, 4);    \/\/ =&gt; undefined Dict.contains(dict, 2); \/\/ =&gt; true Dict.contains(dict, 4); \/\/ =&gt; false Dict.reduce(dict, function(memo, it){   return memo + it; });     \/\/ =&gt; 6 Dict.reduce(dict, function(memo, it){   return memo + it; }, ''); \/\/ =&gt; '123' Dict.turn(dict, function(memo, it, key){   memo[key + key] = it; });     \/\/ =&gt; {aa: 1, bb: 2, cc: 3} Dict.turn(dict, function(memo, it, key){   it % 2 && memo.push(key + it); }, []); \/\/ =&gt; ['a1', 'c3'] <\/code><\/pre>\n<p>  <a name=\"chaining\"><\/a><b><a href=\"#chaining\">#<\/a><\/b> \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0446\u0435\u043f\u043e\u0447\u0435\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432, <a href=\"#dict-and-object-prototype\"># \u043f\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435<\/a>, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u043e\u0434\u0443\u043b\u044f <code>Dict<\/code> \u0438\u0445 \u043d\u0435\u0442, \u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434\u044f\u0442\u0441\u044f. \u0421\u043f\u0430\u0441\u0435\u043d\u0438\u0435\u043c \u0442\u0443\u0442 \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/zenparsing\/es-abstract-refs#examples\">abstract references<\/a>. \u0410 \u0432\u043e\u0442 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 <a href=\"#for\"># <code>$for<\/code><\/a> \u0438 <a href=\"#es6-map\"># <code>Map<\/code><\/a> \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f.<\/p>\n<p>  <a name=\"dict-iter\"><\/a><\/p>\n<h4><b><a href=\"#dict-iter\">#<\/a> \u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e<\/b><\/h4>\n<p>  \u0411\u043b\u0438\u0437\u0438\u0442\u0441\u044f \u0441\u0432\u0435\u0442\u043b\u043e\u0435 ES6 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0441 <a href=\"#es6-iterators\"># \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438<\/a> \u0438 <a href=\"#es6-for-of\"># \u0446\u0438\u043a\u043b\u043e\u043c <code>for-of<\/code><\/a>. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u043a\u0430\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u043c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043d\u0438 \u0442\u0435\u043f\u043b\u043e, \u043d\u0438 \u0445\u043e\u043b\u043e\u0434\u043d\u043e \u2014 \u0434\u043b\u044f \u043d\u0438\u0445 \u0432 ES6 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 <code>for-of<\/code>, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c <a href=\"#es6-map\"># <code>Map<\/code><\/a> \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c \u0438 \u0442.\u043f. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>.keys, .values<\/code> \u0438 <code>.entries<\/code> \u0432 <code>Object.prototype<\/code> \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u2014 \u0442\u0430\u043c \u0438 \u0442\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0443\u0441\u043e\u0440\u0430, \u0441\u043c. \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0417\u0430\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b \u0434\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f:<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d <code>Dict<\/code> \u2014 <code>Dict.{keys, values, entries}<\/code>. \u041d\u043e \u043a\u0430\u043a \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u0441 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043e\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043c\u043d\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e.<\/p>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 <a href=\"https:\/\/github.com\/rwaldron\/tc39-notes\/blob\/master\/es6\/2014-04\/apr-9.md#51-objectentries-objectvalues\">\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>Object.{values, entries}<\/code><\/a>, \u043f\u043e \u0442\u0438\u043f\u0443 <code>Object.keys<\/code>, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432, \u0430 \u043d\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0438 \u0443\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<p>  \u0427\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u2014 \u043d\u0435 \u0437\u043d\u0430\u044e \u0438 \u0433\u0430\u0434\u0430\u0442\u044c \u0431\u043e\u044e\u0441\u044c. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u043a\u0430\u043a \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043d\u0435 \u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e. \u0422\u0430\u043a \u0447\u0442\u043e, \u0445\u043e\u0442\u044c \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043e\u0431\u0430 \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. <a href=\"http:\/\/goo.gl\/kKpVv2\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/a>:<\/p>\n<pre><code class=\"javascript\">var dict = {a: 1, b: 2, c: 3};  console(Object.values(dict));  \/\/ =&gt; [1, 2, 3] console(Object.entries(dict)); \/\/ =&gt; [['a', 1], ['b', 2], ['c', 3]]  for(var key of Dict.keys(dict))console(key); \/\/ =&gt; 'a', 'b', 'c'  for(var [key, val] of Dict.entries(dict)){   console(key); \/\/ =&gt; 'a', 'b', 'c'   console(val); \/\/ =&gt; 1, 2, 3 }  $for(Dict.values(dict)).of(console); \/\/ =&gt; 1, 2, 3  new Map(Dict.entries(dict)); \/\/ =&gt; Map {a: 1, b: 2, c: 3}  new Map((for([k, v] of Dict.entries(dict))if(v % 2)[k + k, v * v])); \/\/ =&gt;  Map {aa: 1, cc: 9} <\/code><\/pre>\n<p>  <a name=\"dict-next\"><\/a><\/p>\n<h4><b><a href=\"#dict-next\">#<\/a> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b<\/b><\/h4>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0439\u0442\u0438 \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435, \u0441\u0434\u0435\u043b\u0430\u0432 <code>Dict<\/code> \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f <code>Object.create(null)<\/code> \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c \u0441 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c, \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c \u043a\u043b\u044e\u0447\u0435\u0439-\u0441\u0442\u0440\u043e\u043a, \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"#es6-symbol\"># \u0441\u0438\u043c\u0432\u043e\u043b\u044b<\/a>. <a href=\"http:\/\/goo.gl\/G4yDFL\">\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a<\/a>:<\/p>\n<pre><code class=\"javascript\">function Dict(props){   if(!(this instanceof Dict))return new Dict(props);   if(props != null){     if(Symbol.iterator in props){       for(var [key, val] of props)this[key] = val;     } else Object.assign(this, props);   } } Dict.prototype = Object.create(null); Dict.prototype[Symbol.toStringTag] = 'Dict'; Dict.prototype[Symbol.iterator] = function(){   return Dict.entries(this); }; <\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0431\u044b \u044d\u0442\u043e \u043d\u0430\u043c \u0434\u0430\u043b\u043e?<\/p>\n<ul>\n<li><code>new Dict instanceof Dict<\/code>.<\/li>\n<li><code>for(var [key, value] of dict){...}, new Map(dict)<\/code> \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 <code>Dict.entries<\/code>.<\/li>\n<li><a href=\"#classof\"># <code>Object.classof(new Dict)<\/code><\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b \u0431\u044b <code>'Dict'<\/code>, \u0430 \u043d\u0435 <code>'Object'<\/code>.<\/li>\n<\/ul>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u044b, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 IE8- \u0432\u044b\u043c\u0440\u0435\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 Firefox \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 ECMAScript 6. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u2014 \u0440\u0438\u0441\u043a\u0443\u0435\u043c \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \/ \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c <code>Dict<\/code> \u0442\u0443\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0451\u0442.<\/p>\n<p>  <a name=\"partial-application\"><\/a><\/p>\n<h2><b><a href=\"#partial-application\">#<\/a> \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<\/b><\/h2>\n<hr\/>\n<p>  \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432 ECMAScript 5 \u0431\u044b\u043b \u043c\u0435\u0442\u043e\u0434 <a href=\"#es5-bind\"># <code>Function#bind<\/code><\/a>. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A7%D0%B0%D1%81%D1%82%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5\">\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f<\/a> \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0412 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a:<\/p>\n<ul>\n<li><a href=\"#part\"># \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/a><\/li>\n<li><a href=\"#placeholder\"># \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/a><\/li>\n<li><a href=\"#method-extraction\"># \u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/a><\/li>\n<li><a href=\"#only\"># \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/a><\/li>\n<\/ul>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%CA%E0%F0%F0%E8%F0%EE%E2%E0%ED%E8%E5\">\u043a\u0430\u0440\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a>, \u043d\u043e \u0432 JavaScript \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0430\u0440\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u043d\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0434\u043a\u043e. \u041a\u0430\u043a \u0438 \u00ab\u043f\u0440\u0430\u0432\u044b\u0435\u00bb \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0414\u043e\u0431\u0430\u0432\u043b\u044e <a href=\"http:\/\/benalman.com\/news\/2012\/09\/partial-application-in-javascript\/\">\u0441\u0441\u044b\u043b\u043a\u0443<\/a> \u043d\u0430 \u0433\u043e\u0434\u043d\u0443\u044e (\u0438 \u0442\u0430\u043a, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e) \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e \u0442\u0435\u043c\u0435.<\/p>\n<p>  <a name=\"part\"><\/a><\/p>\n<h4><b><a href=\"#part\">#<\/a> \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/b><\/h4>\n<p>  <code>Function#bind<\/code> \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 <code>this<\/code>. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430, \u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <code>this<\/code> \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u043b\u0438\u0448\u043d\u0438\u0439\u00bb \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d, \u043c\u0435\u0442\u043e\u0434 <code>Function#bind<\/code> \u043d\u0435\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 (<a href=\"http:\/\/goo.gl\/uj6s6f\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">Array.prototype.compact = [].filter.bind(Array.prototype, function(val){   return val != null; });  [0, null, 1, undefined, 2].compact(); \/\/ =&gt; [] - \u043c\u0435\u0442\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Array.prototype, \u0430 \u043d\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430  \/\/ \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e: Array.prototype.compact = function(){   return this.filter(function(val){     return val != null;   }); };  [0, null, 1, undefined, 2].compact(); \/\/ =&gt; [0, 1, 2]; <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 <code>this<\/code> \u2014 <code>Function#part<\/code> (<a href=\"http:\/\/goo.gl\/l2UY0d\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">Array.prototype.compact = [].filter.part(function(val){   return val != null; });  [0, null, 1, undefined, 2].compact(); \/\/ =&gt; [0, 1, 2];  var fn = console.part(1, 2); fn(3, 4); \/\/ =&gt; 1, 2, 3, 4 <\/code><\/pre>\n<p>  <a name=\"placeholder\"><\/a><\/p>\n<h4><b><a href=\"#placeholder\">#<\/a> \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/b><\/h4>\n<p>  \u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u2014 \u043d\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0432\u044b\u0435 2, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0438\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u0442\u0440\u0435\u0442\u0438\u0439. \u0422\u0443\u0442 <code>Function#bind<\/code> \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u2014 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439.<\/p>\n<pre><code class=\"javascript\">function fn1(a, c){   console(a, 2, c, 4); }; fn1(1, 3); \/\/ =&gt; 1, 2, 3, 4  function fn2(b, c){   console(1, b, c, 4); }; fn2(2, 3); \/\/ =&gt; 1, 2, 3, 4 <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440 \u2014 \u043e\u0431\u044a\u0435\u043a\u0442, \u0437\u0430\u043c\u0435\u0449\u0430\u044e\u0449\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440 \u0442\u0430\u043a \u0438 \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>_<\/code> (\u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"http:\/\/livescript.net\/#functions-partial\">LiveScript<\/a>, <a href=\"http:\/\/goo.gl\/EsYZ69\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>), \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Undescore.js (\u043a\u0441\u0442\u0430\u0442\u0438, \u0432 \u043d\u0435\u0439 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440 \u0434\u043b\u044f <code>_.partial<\/code>) \u0438 LoDash \u043a\u0430\u043a \u0441\u0432\u043e\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441. \u0412\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0441 \u043d\u0438\u043c\u0438, \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u044b\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>_<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>_<\/code>, \u0447\u0442\u043e \u0431\u044b \u0442\u0430\u043c \u043d\u0438 \u043b\u0435\u0436\u0430\u043b\u043e. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 <code>core._<\/code>. <a href=\"http:\/\/goo.gl\/ykMnZf\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">var fn1 = console.part(_, 2, _, 4); fn1(1, 3);    \/\/ =&gt; 1, 2, 3, 4  var fn2 = console.part(1, _, _, 4); fn2(2, 3);    \/\/ =&gt; 1, 2, 3, 4  fn1(1, 3, 5); \/\/ =&gt; 1, 2, 3, 4, 5 fn1(1);       \/\/ =&gt; 1, 2, undefined, 4 <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434 <code>Function#by<\/code>, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 <code>Function#bind<\/code>, \u043d\u043e \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u0430 \u0434\u043b\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c <code>Function#bind<\/code>, \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u2014 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0434\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434 \u044d\u0442\u043e\u0442 \u0438 \u0442\u0430\u043a \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u0432\u0438\u0436\u043a\u0430\u0445.<\/p>\n<pre><code class=\"javascript\">var fn = console.log.by(console, _, 2, _, 4); fn(1, 3, 5); \/\/ =&gt; 1, 2, 3, 4, 5 <\/code><\/pre>\n<p>  <a name=\"method-extraction\"><\/a><\/p>\n<h4><b><a href=\"#method-extraction\">#<\/a> \u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/b><\/h4>\n<p>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043a \u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0433\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c. \u0418 \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 <code>fn(foo.bar.baz.bind(foo.bar))<\/code>. \u041c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u043f\u0438\u0441\u0430\u0442\u044c <code>foo.bar<\/code> 2 \u0440\u0430\u0437\u0430, \u044d\u0442\u043e \u044f\u0432\u043d\u043e\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430 DRY. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043f\u0430\u0441\u0443\u0442 <a href=\"https:\/\/github.com\/zenparsing\/es-abstract-refs\">abstract references<\/a>, \u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 <a href=\"https:\/\/github.com\/zenparsing\/es-abstract-refs\/issues\/5\">\u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442<\/a>. \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u044b\u043c \u0432\u043a\u0443\u0441\u043d\u044b\u043c \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u044f\u0437\u044b\u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e <a href=\"http:\/\/livescript.net\/#property-access\"><code>~<\/code> \u0438\u0437 LiveScript<\/a> \u2014 <code>fn(foo.bar~baz)<\/code> (<a href=\"http:\/\/goo.gl\/58e0Dp\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>).<\/p>\n<p>  \u0420\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u2014 \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e \u043a\u043b\u044e\u0447\u0443. \u042d\u0442\u043e \u043b\u0438\u0431\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>_.bindKey<\/code> \u0438\u0437 <a href=\"http:\/\/lodash.com\/docs#bindKey\">LoDash<\/a> (\u043d\u043e \u0441 \u0440\u0430\u043d\u043d\u0438\u043c \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435\u043c), \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u0442\u043e\u0436\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0439 \u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0445\u0443\u0434\u0448\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c, \u043b\u0438\u0431\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443 \u043c\u0435\u0442\u043e\u0434 \u0432 <code>Object.prototype<\/code>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Object#boundTo<\/code> \u0438\u0437 <a href=\"https:\/\/github.com\/WebReflection\/eddy#objectboundtomethod\">Eddy.js<\/a>.<\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b \u044d\u0442\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u043d\u0438 \u0437\u0432\u0443\u0447\u0430\u043b\u043e, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434 \u0432 <code>Object.prototype<\/code>. \u0420\u0438\u0441\u043a\u043e\u0432\u0430\u0442\u044c, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044f <code>Object.prototype<\/code> \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443-\u0441\u0442\u0440\u043e\u043a\u0435, \u043c\u044b, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043f\u043e\u043a\u0430, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u2014 \u0441\u043b\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432, \u0434\u0430 \u0438 \u0441\u043b\u043e\u043c\u0430\u0435\u043c <code>for-in<\/code> \u0432 IE8-. \u0420\u0430\u043d\u0435\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435 \u043c\u044b \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>_<\/code>. \u0414\u0430\u0431\u044b \u043d\u0435 \u043f\u043b\u043e\u0434\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0435\u0451 \u0438 \u0437\u0434\u0435\u0441\u044c. \u0417\u0430\u043c\u0435\u043d\u0438\u043c \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>_<\/code> \u043c\u0435\u0442\u043e\u0434 <code>toString<\/code> (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 Undescore.js \u0438\u043b\u0438 LoDash \u2014 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c <b>core.js<\/b> \u043f\u043e\u0441\u043b\u0435 \u043d\u0438\u0445). \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447-\u0441\u0442\u0440\u043e\u043a\u0443, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <a href=\"#es6-symbol-polyfill\"># \u043a\u043b\u044e\u0447\u0443 \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430<\/a>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443 \u043c\u0435\u0442\u043e\u0434 \u0432 <code>Object.prototype<\/code>. \u0417\u0430 \u0441\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u044f\u0437\u043d\u043e\u0433\u043e \u0445\u0430\u043a\u0430 \u0441 <a href=\"#es5-keys\"># \u0432\u0435\u0441\u0435\u043b\u044b\u043c \u0431\u0430\u0433\u043e\u043c<\/a>, <b>\u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438 \u0432 IE8-, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0432 <code>for-in<\/code>.<\/b><\/p>\n<p>  \u0418\u0442\u043e\u0433\u043e, \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0438, \u043f\u043e\u043b\u0443\u0447\u0438\u043c <code>fn(foo.bar[_]('baz'))<\/code> \u2014 \u0434\u0430\u043b\u0435\u043a\u043e\u0432\u0430\u0442\u043e \u043e\u0442 \u0438\u0434\u0435\u0430\u043b\u0430, \u043d\u043e \u0445\u043e\u0442\u044c \u043e\u0442 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0437\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f. <a href=\"http:\/\/goo.gl\/dQsSTi\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/a>:<\/p>\n<pre><code class=\"javascript\">['foobar', 'foobaz', 'barbaz'].filter(\/bar\/[_]('test')); \/\/ =&gt; ['foobar', 'barbaz']  var has = {}.hasOwnProperty[_]('call');  console(has({key: 42}, 'foo')); \/\/ =&gt; false console(has({key: 42}, 'key')); \/\/ =&gt; true  var array = []   , push  = array[_]('push'); push(1); push(2, 3); console(array); \/\/ =&gt; [1, 2, 3]; <\/code><\/pre>\n<p>  \u041f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443, \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0430\u0437\u0430 \u043e\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 IE8- \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439, \u043c\u0435\u0442\u043e\u0434 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c, \u0430 \u0442\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0432\u0430\u0442\u043e \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \ud83d\ude42 <code>tie, boundTo, bindKey<\/code> \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0434\u0443\u0445\u0435, \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0432 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>Proxy<\/code> \u0438\u0437 ES6 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u043e \u0431\u044b \u043a\u0443\u0434\u0430 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u0435\u0439 \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u043b\u044e\u0447\u0430 \u0432 \u043c\u0435\u0442\u043e\u0434 \u2014 <code>fn(foo.bar[_].baz)<\/code>, \u043d\u043e \u0431\u0435\u0437 <code>Proxy<\/code> \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 (\u0433\u0435\u0442\u0442\u0435\u0440, \u043e\u0431\u0445\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432), \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043c\u044b \u043f\u043e\u043a\u0430 \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u043c.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 Proxy, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u043e\u0447\u043d\u043e\u043c \u043e\u0433\u043d\u0435\u043b\u0438\u0441\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">var _ = Symbol(); Object.defineProperty(Object.prototype, _, {   get: function(){     return new Proxy(this, {       apply: function(){ \/* \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 [_] \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 *\/ },       get: function(context, name){         return context[name].bind(context);       }     });   } });  ['foobar', 'foobaz', 'barbaz'].filter(\/bar\/[_].test); \/\/ =&gt; ['foobar', 'barbaz']  var has = {}.hasOwnProperty[_].call;  console(has({key: 42}, 'foo')); \/\/ =&gt; false console(has({key: 42}, 'key')); \/\/ =&gt; true  var array = []   , push  = array[_].push; push(1); push(2, 3); console(array); \/\/ =&gt; [1, 2, 3]; <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <a name=\"only\"><\/a><\/p>\n<h4><b><a href=\"#only\">#<\/a> \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/b><\/h4>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/114737\/\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u041f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043d\u0435\u0439 \u2014 <code>parseInt<\/code> \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u0440\u0430\u0437\u0443\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u043a \u0447\u0438\u0441\u043b\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>Number<\/code>, \u0447\u0442\u043e \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0414\u0435\u043b\u043e \u0442\u0443\u0442 \u043d\u0435 \u0432 \u0438\u0445 \u00ab\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438\u00bb, \u0430 \u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u044e\u044e \u043e\u0431\u0435\u0440\u0442\u043a\u0443.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435:<\/p>\n<pre><code class=\"javascript\">[1, 2, 3].forEach(console); \/\/ =&gt; 1 0 [1, 2, 3] \/\/ =&gt; 2 1 [1, 2, 3] \/\/ =&gt; 3 2 [1, 2, 3] <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 <code>.forEach<\/code>, \u043a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0443 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u2014 \u0438\u043d\u0434\u0435\u043a\u0441 \u0438 \u0441\u0430\u043c \u043c\u0430\u0441\u0441\u0438\u0432. \u0410 \u043d\u0430\u043c \u043e\u043d\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. \u0422\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u043e\u043b\u043b\u0431\u044d\u043a \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432 \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<pre><code class=\"javascript\">[1, 2, 3].forEach(function(it){   console(it); }); \/\/ =&gt; 1, 2, 3 <\/code><\/pre>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u0432\u044b\u0448\u0435, \u0434\u043b\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <code>Function#only<\/code>. \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u0442\u043e\u0440\u043e\u0439, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u2014 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442. <a href=\"http:\/\/goo.gl\/EflCFz\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"javascript\">[1, 2, 3].forEach(console.only(1)); \/\/ =&gt; 1, 2, 3 <\/code><\/pre>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 1, \u043f\u0440\u043e\u0449\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0438\u0437 ES6 \u0438\u043b\u0438 \u043a\u043e\u0444\u0435\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u043d\u043e \u0435\u0441\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u2014 \u0443\u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e.<\/p>\n<p>  <a name=\"date-format\"><\/a><\/p>\n<h2><b><a href=\"#date-format\">#<\/a> \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u044b<\/b><\/h2>\n<hr\/>\n<p>  \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u044b, \u0432 JavaScript \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u0443\u0436 \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f. \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <b>\u00ab18.11.2014 06:07:25\u00bb<\/b>? <a href=\"http:\/\/goo.gl\/duI0y0\">\u0412\u0441\u0451 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e<\/a>:<\/p>\n<pre><code class=\"javascript\">var date = new Date; function lz2(it){   return it &gt; 9 ? it : '0' + it; } var format = [date.getDate(), date.getMonth() + 1, date.getFullYear()].map(lz2).join('.') + ' ' +              [date.getHours(), date.getMinutes(), date.getSeconds()].map(lz2).join(':'); console(format); \/\/ =&gt; '18.11.2014 06:07:25 ' <\/code><\/pre>\n<p>  \u0410 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u043e\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <b>\u00ab\u0412\u0442\u043e\u0440\u043d\u0438\u043a, 18 \u041d\u043e\u044f\u0431\u0440\u044f 2014 \u0433., 6:07:25\u00bb<\/b>?<\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u044b\u043b \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <b>ECMA402<\/b>, <a href=\"http:\/\/norbertlindenberg.com\/ecmascript\/intl.html\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<\/a>. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 JavaScript \u043e\u0431\u044a\u0435\u043a\u0442 <b>Intl<\/b>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u044b, \u0447\u0438\u0441\u0435\u043b, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a. \u041d\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Intl\">Intl<\/a> \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/218481\/\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u041a\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0440\u043e\u0447\u0435\u043c\u0443, \u044d\u0442\u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b <code>Date#toLocaleString, Date#toLocaleDateString, Date#toLocaleTimeString<\/code>, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432 \u043d\u0438\u0445 2 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430: \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043e\u043f\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445, \u0441\u0442\u0440\u043e\u043a\u0443, \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043a \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u043c\u0443 \u0432\u044b\u0448\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0443, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"http:\/\/goo.gl\/DHvgqd\">\u0442\u0430\u043a<\/a>:<\/p>\n<pre><code class=\"javascript\">new Date().toLocaleString('ru-RU', {   weekday: 'long',   year:    'numeric',   month:   'long',   day:     'numeric',   hour:    'numeric',   minute:  '2-digit',   second:  '2-digit' }); \/\/ =&gt; '\u0432\u0442\u043e\u0440\u043d\u0438\u043a, 18 \u043d\u043e\u044f\u0431\u0440\u044f 2014 \u0433., 6:07:25' <\/code><\/pre>\n<p>  \u0413\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0443\u0436 \u0442\u0430\u043a, \u0447\u0435\u043c \u043d\u0438\u043a\u0430\u043a. \u041a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u2014 \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f Chrome, Opera, IE11, \u0441 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 \u043f\u043e\u0440 \u0438 Firefox. \u041d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 IE10-, Safari, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 \u0447\u0451\u0440\u0442 \u0435\u0449\u0435 \u0437\u043d\u0430\u0435\u0442 \u0447\u0435\u0433\u043e. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/andyearnshaw\/Intl.js\">\u043f\u043e\u043b\u0438\u0444\u0438\u043b<\/a>. \u041d\u043e \u0432\u043e\u0442 \u043d\u0435\u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u0435\u0441\u0438\u0442\u044c, \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u043b\u043e\u043a\u0430\u043b\u0435\u0439. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 <b>\u0432 core.js \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u0438\u0444\u0438\u043b ECMA402<\/b>.<\/p>\n<p>  <a name=\"simple-date-format\"><\/a><\/p>\n<h4><b><a href=\"#simple-date-format\">#<\/a> \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u044b.<\/b><\/h4>\n<p>  \u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u00ab\u043f\u0440\u043e\u0441\u0442\u043e\u0435\u00bb? \u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0442\u043e\u0439? \u041c\u043d\u0435 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u043e\u0431\u044b\u0447\u043d\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u044b \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\u0430. \u041d\u0443 \u0430 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u044b \u2014 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c <b><a href=\"http:\/\/momentjs.com\/\">Moment.js<\/a><\/b> \u0438\u043b\u0438 \u043f\u043e\u043b\u0438\u0444\u0438\u043b <code>Intl<\/code>. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u0432\u0435\u0441\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0442\u043e\u0439 \u2014 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0435\u0442\u043e\u0434 <code>Date#format<\/code> \u0438 \u0435\u0433\u043e UTC \u0432\u0435\u0440\u0441\u0438\u044e <code>Date#formatUTC<\/code> (<a href=\"http:\/\/goo.gl\/NMeGEy\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">new Date().format('W, D MM Y \u0433., h:mm:ss', 'ru');    \/\/ =&gt; '\u0412\u0442\u043e\u0440\u043d\u0438\u043a, 18 \u041d\u043e\u044f\u0431\u0440\u044f 2014 \u0433., 6:07:25' new Date().formatUTC('W, D MM Y \u0433., h:mm:ss', 'ru'); \/\/ =&gt; '\u0412\u0442\u043e\u0440\u043d\u0438\u043a, 18 \u041d\u043e\u044f\u0431\u0440\u044f 2014 \u0433., 0:07:25' <\/code><\/pre>\n<p>  \u0420\u0430\u0434\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438 \u043b\u0435\u0433\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041f\u043e\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438\u0445 \u043c\u0438\u043d\u0438\u043c\u0443\u043c:<\/p>\n<pre><code class=\"sql\">s  | \u0421\u0435\u043a\u0443\u043d\u0434\u044b             | 0-59 ss | \u0421\u0435\u043a\u0443\u043d\u0434\u044b, 2 \u0446\u0438\u0444\u0440\u044b    | 00-59 m  | \u041c\u0438\u043d\u0443\u0442\u044b              | 0-59 mm | \u041c\u0438\u043d\u0443\u0442\u044b, 2 \u0446\u0438\u0444\u0440\u044b     | 00-59 h  | \u0427\u0430\u0441\u044b                | 0-23 hh | \u0427\u0430\u0441\u044b, 2 \u0446\u0438\u0444\u0440\u044b       | 00-23 D  | \u0414\u0430\u0442\u0430                | 1-31 DD | \u0414\u0430\u0442\u0430, 2 \u0446\u0438\u0444\u0440\u044b       | 01-31 W  | \u0414\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438, \u0441\u0442\u0440\u043e\u043a\u0430 | \u0412\u0442\u043e\u0440\u043d\u0438\u043a N  | \u041c\u0435\u0441\u044f\u0446               | 1-12 NN | \u041c\u0435\u0441\u044f\u0446, 2 \u0446\u0438\u0444\u0440\u044b      | 01-12 M  | \u041c\u0435\u0441\u044f\u0446, \u0441\u0442\u0440\u043e\u043a\u0430       | \u041d\u043e\u044f\u0431\u0440\u044c MM | \u041c\u0435\u0441\u044f\u0446\u0430, \u0441\u0442\u0440\u043e\u043a\u0430      | \u041d\u043e\u044f\u0431\u0440\u044f Y  | \u0413\u043e\u0434, \u043f\u043e\u043b\u043d\u044b\u0439         | 2014 YY | \u0413\u043e\u0434, 2 \u0446\u0438\u0444\u0440\u044b        | 14 <\/code><\/pre>\n<p>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0443\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0443\u0441\u0441\u043a\u0443\u044e (<code>ru<\/code>) \u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0443\u044e (<code>en<\/code>) \u043b\u043e\u043a\u0430\u043b\u0438. \u041b\u043e\u043a\u0430\u043b\u044c \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043c <code>core.locale<\/code>, \u043b\u0438\u0431\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>Date#format<\/code> \u0438 <code>Date#formatUTC<\/code> (<a href=\"http:\/\/goo.gl\/BYG9XY\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430<\/a>):<\/p>\n<pre><code class=\"javascript\">new Date().format('W, D MM Y', 'ru'); \/\/ =&gt; '\u0412\u0442\u043e\u0440\u043d\u0438\u043a, 18 \u041d\u043e\u044f\u0431\u0440\u044f 2014' new Date().format('W, D MM Y');       \/\/ =&gt; 'Tuesday, 18 November 2014' core.locale('ru'); new Date().format('W, D MM Y');       \/\/ =&gt; '\u0412\u0442\u043e\u0440\u043d\u0438\u043a, 18 \u041d\u043e\u044f\u0431\u0440\u044f 2014' <\/code><\/pre>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u043b\u043e\u043a\u0430\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0438\u0436\u0435. \u0412 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c\u0441\u044f <code>core.addLocale<\/code>, \u043d\u043e \u0438\u0437-\u0437\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c-\u043b\u043e\u043a\u0430\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"javascript\">(typeof core != 'undefined' ? core : require('core-js\/library')).addLocale('ru', {   weekdays: '\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0435\u0440\u0433,\u041f\u044f\u0442\u043d\u0438\u0446\u0430,\u0421\u0443\u0431\u0431\u043e\u0442\u0430',   months: '\u042f\u043d\u0432\u0430\u0440:\u044f|\u044c,\u0424\u0435\u0432\u0440\u0430\u043b:\u044f|\u044c,\u041c\u0430\u0440\u0442:\u0430|,\u0410\u043f\u0440\u0435\u043b:\u044f|\u044c,\u041c\u0430:\u044f|\u0439,\u0418\u044e\u043d:\u044f|\u044c,\u0418\u044e\u043b:\u044f|\u044c,\u0410\u0432\u0433\u0443\u0441\u0442:\u0430|,\u0421\u0435\u043d\u0442\u044f\u0431\u0440:\u044f|\u044c,\u041e\u043a\u0442\u044f\u0431\u0440:\u044f|\u044c,\u041d\u043e\u044f\u0431\u0440:\u044f|\u044c,\u0414\u0435\u043a\u0430\u0431\u0440:\u044f|\u044c' }); <\/code><\/pre>\n<p>  <a href=\"http:\/\/goo.gl\/PVfVLd\">\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432<\/a>:<\/p>\n<pre><code class=\"javascript\">new Date().format('DD.NN.YY');         \/\/ =&gt; '18.11.14' new Date().format('hh:mm:ss');         \/\/ =&gt; '06:07:25' new Date().format('DD.NN.Y hh:mm:ss'); \/\/ =&gt; '18.11.2014 06:07:25' new Date().format('W, D MM Y \u0433\u043e\u0434\u0430');   \/\/ =&gt; '\u0412\u0442\u043e\u0440\u043d\u0438\u043a, 18 \u041d\u043e\u044f\u0431\u0440\u044f 2014 \u0433\u043e\u0434\u0430' new Date().format('D MM, h:mm');       \/\/ =&gt; '18 \u041d\u043e\u044f\u0431\u0440\u044f, 6:07' new Date().format('M Y');              \/\/ =&gt; '\u041d\u043e\u044f\u0431\u0440\u044c 2014' <\/code><\/pre>\n<p>  <a name=\"object\"><\/a><\/p>\n<h2><b><a href=\"#object\">#<\/a> \u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 API<\/b><\/h2>\n<hr\/>\n<p>  <a name=\"object-define\"><\/a><a href=\"#object-define\"><b>#<\/b><\/a> <b>\u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/b>: \u0432 ECMAScript 5 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0433\u0435\u0442\u0442\u0435\u0440\u044b \u0438 \u0441\u0435\u0442\u0442\u0435\u0440\u044b \u0432 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0410 \u0432\u043e\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0433\u0435\u0442\u0442\u0435\u0440\u044b \/ \u0441\u0435\u0442\u0442\u0435\u0440\u044b \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <code>Object.defineProperty<\/code> \/ <code>Object.defineProperties<\/code>, \u0447\u0442\u043e \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043d\u044b\u0439 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439, \u043a\u0430\u043a \u043d\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c) \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430, \u0430 \u044d\u0442\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <a href=\"#es6-object-assign\"># <code>Object.assign<\/code><\/a>, \u0432 ECMAScript 6 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>Object.mixin<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432. \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>super<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0433\u043e \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u043e\u0436\u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434 <code>Object.define<\/code>, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 <code>Object.mixin<\/code> \u2014 \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0432 \u0446\u0435\u043b\u044c \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432, \u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 <code>super<\/code> \u0432 ECMAScript 5.<\/p>\n<pre><code class=\"javascript\">\/\/ \u0411\u044b\u043b\u043e: Object.defineProperty(target, 'c', {   enumerable: true,   configurable: true,   get: function(){     return this.a + this.b;   } });  \/\/ \u0421\u0442\u0430\u043b\u043e: Object.define(target, {   get c(){     return this.a + this.b;   } }); <\/code><\/pre>\n<p>  <a name=\"object-make\"><\/a><a href=\"#object-make\"><b>#<\/b><\/a> <b>\u0412\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/b>: \u0432 ECMAScript 5 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0447\u0435\u0440\u0435\u0437 <code>Object.create<\/code>. \u0411\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438, \u043d\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c <code>Object.create<\/code>, \u043a\u0430\u043a \u0438 <code>Object.defineProperties<\/code>, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0447\u0442\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434 <code>Object.make<\/code> \u2014 \u0430\u043d\u0430\u043b\u043e\u0433 <code>Object.create<\/code>, \u0432\u0442\u043e\u0440\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0439 \u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<pre><code class=\"javascript\">\/\/ \u041f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432: var copy = Object.make(Object.getPrototypeOf(src), src);  \/\/ \u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c: function Vector2D(x, y){   this.x = x;   this.y = y; } Object.define(Vector2D.prototype, {   get xy(){     return Math.hypot(this.x, this.y);   } }); function Vector3D(x, y, z){   Vector2D.apply(this, arguments);   this.z = z; } Vector3D.prototype = Object.make(Vector2D.prototype, {   constructor: Vector3D,   get xyz(){     return Math.hypot(this.x, this.y, this.z);   } });  var vector = new Vector3D(9, 12, 20); console(vector.xy);  \/\/ =&gt; 15 console(vector.xyz); \/\/ =&gt; 25 vector.y++; console(vector.xy);  \/\/ =&gt; 15.811388300841896 console(vector.xyz); \/\/ =&gt; 25.495097567963924 <\/code><\/pre>\n<p>  \u0412 ECMAScript 7 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/gist.github.com\/WebReflection\/9353781\">Object.getOwnPropertyDescriptors<\/a>, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439, \u043a\u0430\u043a \u044f\u0441\u043d\u043e \u0438\u0437 \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0441\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u0440\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 <code>Object.defineProperties<\/code> \u0438 <code>Object.create<\/code> \u0438, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u043d\u0430\u0448\u0438\u043c <code>Object.make<\/code> \u0438 <code>Object.define<\/code>. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0430\u044f.<\/p>\n<p>  <a name=\"array\"><\/a><\/p>\n<h2><b><a href=\"#array\">#<\/a> \u041c\u0430\u0441\u0441\u0438\u0432\u044b<\/b><\/h2>\n<hr\/>\n<p>  <a name=\"array-contains\"><\/a><a href=\"#array-contains\"><b>#<\/b><\/a> \u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/github.com\/domenic\/Array.prototype.contains\">Array#contains<\/a> \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 ECMAScript 7 \u0438 \u0443\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445 \u043e\u0433\u043d\u0435\u043b\u0438\u0441\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043a \u00ab\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u0430\u043c\u00bb \u0435\u0433\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0441\u043b\u043e\u0436\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u0437-\u0437\u0430 <a href=\"https:\/\/esdiscuss.org\/topic\/array-prototype-contains-solutions\">\u0431\u0430\u0433\u0430 MooTools<\/a>, \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f \u0438\u043b\u0438 \u0435\u0449\u0451 \u0447\u0442\u043e. \u041e\u043d \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <code>Array#indexOf<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f <a href=\"#same-value-zero\"># SameValueZero<\/a> \u0438 \u043d\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u00ab\u0434\u044b\u0440\u043a\u0438\u00bb. \u0412\u0442\u043e\u0440\u043e\u0439, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f. <a href=\"http:\/\/goo.gl\/XXS5HY\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/a>:<\/p>\n<pre><code class=\"javascript\">[1, 2, 3].contains(2);        \/\/ =&gt; true [1, 2, 3].contains(4);        \/\/ =&gt; false [1, 2, 3].contains(2, 2);     \/\/ =&gt; false  [NaN].indexOf(NaN);           \/\/ =&gt; -1 [NaN].contains(NaN);          \/\/ =&gt; true Array(1).indexOf(undefined);  \/\/ =&gt; -1 Array(1).contains(undefined); \/\/ =&gt; true <\/code><\/pre>\n<p>  <a name=\"array-turn\"><\/a><a href=\"#array-turn\"><b>#<\/b><\/a> \u0410 \u0432\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 <code>Array#turn<\/code> \u2014 \u043f\u043b\u043e\u0434 \u043c\u043e\u0435\u0439 \u0431\u043e\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438. \u0425\u043e\u0442\u044f, \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u043d\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u2014 \u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <code>_.transform<\/code> \u0438\u0437 <a href=\"http:\/\/lodash.com\/docs#transform\">LoDash<\/a>. \u042d\u0442\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0443 <code>Array#reduce<\/code> \u0434\u043b\u044f \u0441\u0432\u0451\u0440\u0442\u043a\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432) \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438\u0437 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430. \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 <code>Array#reduce<\/code>. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043e\u0431\u0445\u043e\u0434 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432\u0435\u0440\u043d\u0443\u0432 \u0438\u0437 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0430 <code>false<\/code>. <a href=\"http:\/\/goo.gl\/r3DbCT\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/a>:<\/p>\n<pre><code class=\"javascript\">\/\/ \u0421\u0432\u0451\u0440\u0442\u043a\u0430 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c: [1, 2, 3, 4, 5].reduce(function(memo, it){   memo['key' + it] = !!(it % 2);   return memo; }, {}); \/\/ =&gt; {key1: true, key2: false, key3: true, key4: false, key5: true}  [1, 2, 3, 4, 5].turn(function(memo, it){   memo['key' + it] = !!(it % 2); }, {}); \/\/ =&gt; {key1: true, key2: false, key3: true, key4: false, key5: true}  \/\/ filter + map + slice, \u0434\u0435\u043b\u0430\u0435\u043c \u043b\u0438\u0448\u043d\u044e\u044e \u0440\u0430\u0431\u043e\u0442\u0443: [1, 2, 3, 4, 5, 6, 7, 8, 9].map(function(it){   return it * it; }).filter(function(it){   return it % 2; }).slice(0, 2); \/\/ =&gt; [1, 9]  [1, 2, 3, 4, 5, 6, 7, 8, 9].turn(function(memo, it){   it % 2 && memo.push(it * it);   if(memo.length == 2)return false; }); \/\/ =&gt; [1, 9] <\/code><\/pre>\n<p>  <a name=\"num\"><\/a><\/p>\n<h2><b><a href=\"#num\">#<\/a> \u0427\u0438\u0441\u043b\u0430<\/b><\/h2>\n<hr\/>\n<p>  <a name=\"num-iter\"><\/a><a href=\"#num-iter\"><b>#<\/b><\/a> \u041f\u043e\u043c\u043d\u0438\u0442\u0435 <a href=\"#es6-iterators\"># \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438<\/a> \u0438\u0437 \u0433\u043b\u0430\u0432\u044b \u043f\u0440\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b? \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0432\u043a\u0443\u0441\u043d\u0430\u044f \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0431\u044b \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435. \u041e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u0446\u0438\u043a\u043b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0440\u0430\u0437, \u043d\u0430 \u0431\u0430\u0437\u0435 <code>for-of<\/code>, \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0447\u0435\u0440\u0435\u0437 <a href=\"#es6-array-from\"># <code>Array.from<\/code><\/a> (\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 <a href=\"#es6-spread\"># spread<\/a>) \u0438 \u0442.\u0434. \u0422\u0430\u043a \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0447\u0438\u0441\u0435\u043b, \u0445\u043e\u0442\u044c \u0438 \u043d\u0435 \u0432 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. <a href=\"http:\/\/goo.gl\/yDD2oM\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/a>:<\/p>\n<pre><code class=\"javascript\">\/\/ \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0438\u043a\u043b: for(var i = 0; i &lt; 3; i++)console(i); \/\/ =&gt; 0, 1, 2  \/\/ for-of \u0441 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0447\u0438\u0441\u043b\u0430: for(var i of 3)console(i); \/\/ =&gt; 0, 1, 2  \/\/ \u041f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 for-of, \u0445\u0435\u043b\u043f\u0435\u0440: $for(3).of(console); \/\/ =&gt; 0, 1, 2  \/\/ \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b: \/\/ .map \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 &quot;\u0434\u044b\u0440\u043a\u0438&quot; \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 Array(10).map(Math.random); \/\/ =&gt; [undefined \u00d7 10]  \/\/ ES5 \u043a\u043e\u0441\u0442\u044b\u043b\u044c, \u043f\u0430\u0440\u0430 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432: Array.apply(undefined, Array(10)).map(Math.random); \/\/ =&gt; [0.9442228835541755, 0.8101077508181334, ...]  \/\/ ES6 \u043a\u043e\u0441\u0442\u044b\u043b\u044c, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432: Array(10).fill(undefined).map(Math.random); \/\/ =&gt; [0.5587614295072854, 0.009569905698299408, ...]  \/\/ Number Iterator: Array.from(10, Math.random); \/\/ =&gt; [0.9817775336559862, 0.02720663254149258, ...]  Array.from(10); \/\/ =&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  Array.from(10, function(it){   return this + it * it; }, .42); \/\/ =&gt; [0.42, 1.42, 4.42, 9.42, 16.42, 25.42, 36.42, 49.42, 64.42, 81.42]  \/\/ Comprehensions: [for(i of 10)if(i % 2)i * i]; \/\/ =&gt; [1, 9, 25, 49, 81]  Dict((for(i of 3)['key' + i, !(i % 2)])); \/\/ =&gt; {key0: true, key1: false, key2: true}  $for(10).filter(function(i){   return i % 2; }).array(function(i){   return i * i; });  \/\/ =&gt; [1, 9, 25, 49, 81]  Dict($for(3).map(function(i){   return ['key' + i, !(i % 2)]; })); \/\/ =&gt; {key0: true, key1: false, key2: true} <\/code><\/pre>\n<p>  <a name=\"num-math\"><\/a><a href=\"#num-math\"><b>#<\/b><\/a> \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 <code>Number.prototype<\/code> \u2014 \u0438\u0437 \u0440\u0430\u0437\u0440\u044f\u0434\u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043c\u0435\u043b\u043e\u0447\u0435\u0439. \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0432 Sugar \u0438 MooTools, \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>Math<\/code> \u0432 <code>Number.prototype<\/code>. \u0422\u0443\u0442 \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e\u0441\u043e\u0431\u043e \u043d\u0435\u0447\u0435\u0433\u043e \u2014 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u043e \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \ud83d\ude42<\/p>\n<p>  \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0443\u043f\u043e\u043c\u044f\u043d\u0435\u043c \u043c\u0435\u0442\u043e\u0434 <code>Number#random<\/code>. \u041e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043c\u0435\u0436\u0434\u0443 \u0447\u0438\u0441\u043b\u043e\u043c-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0).<\/p>\n<p>  <a href=\"http:\/\/goo.gl\/06bs1k\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/a>:<\/p>\n<pre><code class=\"javascript\">3..pow(3);           \/\/ =&gt; 27 (-729).abs().sqrt(); \/\/ =&gt; 27  10..random(20);         \/\/ =&gt; \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (10, 20), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 16.818793776910752 10..random(20).floor(); \/\/ =&gt; \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 [10, 19], \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 16  var array = [1, 2, 3, 4, 5]; array[array.length.random().floor()]; \/\/ =&gt; \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 4 <\/code><\/pre>\n<p>  <a name=\"escape\"><\/a><\/p>\n<h2><b><a href=\"#escape\">#<\/a> \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/b><\/h2>\n<hr\/>\n<p>  <a name=\"escape-html\"><\/a><a href=\"#escape-html\"><b>#<\/b><\/a> \u0415\u0441\u043b\u0438 \u044f \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e, \u043f\u043e\u0434 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0430\u0442\u044c\u0438, \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e JavaScript \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 HTML, \u0442\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u0439 \u0442\u0430\u0439\u043d\u044b \u043d\u0435 \u043e\u0442\u043a\u0440\u043e\u044e. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 HTML \u043a\u0430\u043a \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0445 \u0442\u044f\u043d\u0443\u0442\u044c? \u041c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTML \u0435\u0441\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445. \u0412 Sugar, Prototype, MooTools \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u044b <code>escapeHTML<\/code> \u0438 <code>unescapeHTML<\/code> \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0440\u0443\u0448\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044e:<\/p>\n<pre><code class=\"javascript\">'&lt;script&gt;doSomething();&lt;\/script&gt;'.escapeHTML(); \/\/ =&gt; '&amp;lt;script&amp;gt;doSomething();&amp;lt;\/script&amp;gt;' '&amp;lt;script&amp;gt;doSomething();&amp;lt;\/script&amp;gt;'.unescapeHTML(); \/\/ =&gt; '&lt;script&gt;doSomething();&lt;\/script&gt;' <\/code><\/pre>\n<p>  <a name=\"escape-regexp\"><\/a><a href=\"#escape-regexp\"><b>#<\/b><\/a> \u0427\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \/ \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0443\u0436\u043d\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0445. \u041c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432 Sugar, Prototype, MooTools, \u0433\u0434\u0435-\u0442\u043e \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 <code>RegExp<\/code>, \u0433\u0434\u0435-\u0442\u043e \u043c\u0435\u0442\u043e\u0434 <code>String.prototype<\/code>. \u0414\u0430\u0432\u043d\u043e <a href=\"http:\/\/esdiscuss.org\/topic\/regexp-escape\">\u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f<\/a> \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 ECMAScript. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u044b \u0434\u043e\u0436\u0434\u0435\u043c\u0441\u044f \u044d\u0442\u043e\u0433\u043e, \u0430 \u043f\u043e\u043a\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c <a href=\"https:\/\/gist.github.com\/kangax\/9698100\">\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/a> \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435:<\/p>\n<pre><code class=\"javascript\">RegExp.escape('\u041f\u0440\u0438\u0432\u0435\u0442 -[]{}()*+?.,\\\\^$|'); \/\/ =&gt; '\u041f\u0440\u0438\u0432\u0435\u0442 \\-\\[\\]\\{\\}\\(\\)\\*\\+\\?\\.\\,\\\\\\^\\$\\|' <\/code><\/pre>\n<p>  <a name=\"end\"><\/a><\/p>\n<h2><b><a href=\"#end\">#<\/a> \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/b><\/h2>\n<hr\/>\n<p>  \u041d\u0443 \u0432\u043e\u0442 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a.<\/p>\n<p>  \u041f\u0440\u0435\u0434\u0432\u0438\u0436\u0443 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 xkcd \u043f\u0440\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b, \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f, \u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u0435\u0451, \u043a\u0440\u043e\u043c\u0435 \u0441\u043e\u043b\u044f\u043d\u043a\u0438 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0438\u0437 \u043f\u0430\u0440\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0432\u0435\u0441\u043e\u043c \u0432 \u0441\u043e\u0442\u043d\u0438 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442, \u044f \u043d\u0435 \u0432\u0438\u0436\u0443.<\/p>\n<p>  \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u043d\u043e\u0432 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043e\u043d\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u043d\u044b \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u0438. \u0415\u0449\u0435 \u043d\u0443\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u0434 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u2014 \u0441 \u044d\u0442\u0438\u043c \u043f\u043e\u043a\u0430 \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0441\u044f.<\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0432\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0438 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435.<\/p>\n<p>  <b>\u0414\u0430. \u0418 \u0435\u0449\u0435, \u0440\u0430\u0437 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b \u2014 \u0441\u043a\u0443\u0447\u043d\u043e \u043c\u043d\u0435. \u0418\u0449\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0439 \u0437\/\u043f.<\/b>      \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\/216997\/\"> http:\/\/habrahabr.ru\/post\/216997\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<blockquote><p>\u041e\u0434\u0438\u043d \u043f\u0430\u0446\u0430\u043d \u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0435 \u043d\u0430 JavaScript, \u0438 \u043a\u043b\u0438\u0435\u043d\u0442, \u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0447\u0442\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0443\u0434\u043e\u0431\u043d\u043e, \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u0442\u043e\u043c \u0435\u0433\u043e \u0432 \u0434\u0443\u0440\u043a\u0443 \u0437\u0430\u0431\u0440\u0430\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<br \/>  <i><b>\u2014 \u0421 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430<\/b><\/i><\/p><\/blockquote>\n<p>  \u041a \u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u044f? \u0417\u0430\u043d\u044f\u0442\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u2014 JavaScript. \u041e\u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e web \u0438 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u044b\u0445 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442.<\/p>\n<p>  JavaScript \u044d\u0442\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0438 <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D1%F2%E0%ED%E4%E0%F0%F2%ED%E0%FF_%E1%E8%E1%EB%E8%EE%F2%E5%EA%E0\">\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/a>, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0434\u0435\u0441\u044c \u0438 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c. \u041f\u043e\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b, \u043c\u0435\u0442\u043e\u0434\u044b, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0431\u0443\u0434\u044c \u0442\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f API, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0435 \u043d\u0430 JavaScript, \u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u043c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441 \u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439.<\/p>\n<p>  \u0412\u0430\u043d\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 JavaScript, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u0435\u043f\u043b\u043e\u0445\u0430. \u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 ECMA-262 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u2014 \u043e\u0442 3 \u0434\u043e \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 6. \u0427\u0430\u0441\u0442\u044c API \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, API \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 ECMA-402. \u041c\u043d\u043e\u0433\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c JavaScript, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>setTimeout<\/code>, \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a web-\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c. \u041a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u043e\u0432\u0441\u0435 \u2014 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u0435-\u0444\u0430\u043a\u0442\u043e.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u0443\u0436 \u043e\u043d\u0430 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u2014 \u0432\u0435\u0437\u0434\u0435 \u0440\u0430\u0437\u043d\u0430\u044f. \u0415\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 IE, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ES3 90-\u0431\u043e\u0440\u043e\u0434\u0430\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 <code>Array#forEach, Function#bind, Object.create<\/code> \u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0438 \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Node.js, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u0436\u0435 \u0432\u043e\u0432\u0441\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0433\u0440\u044f\u0434\u0443\u0449\u0435\u0433\u043e ES6.<\/p>\n<p>  \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043a\u0430\u043a \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0442\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0447\u0442\u043e (\u043f\u043e\u043a\u0430?) \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 <b><a href=\"https:\/\/github.com\/zloirock\/core-js\">core.js<\/a><\/b> \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0438\u0445 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 JavaScript. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0435\u0449\u0435 \u0438 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 \u043f\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 JavaScript \u0438 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043e \u0435\u0451 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445.<\/p>\n<h4><b>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0438\u043b\u0438 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435:<\/b><\/h4>\n<p>  <\/p>\n<ul>\n<li>\n<h5><a href=\"\/post\/216997\/#approach\">\u041f\u043e\u0434\u0445\u043e\u0434\u044b<\/a><\/h5>\n<\/li>\n<li>\n<h5><a href=\"\/post\/216997\/#I\">\u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f: \u041a\u043e\u0441\u0442\u044b\u043b\u0438<\/a><\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"\/post\/216997\/#es5\">ECMAScript 5<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6\">ECMAScript 6<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-symbol\">ECMAScript 6: \u0421\u0438\u043c\u0432\u043e\u043b\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-collections\">ECMAScript 6: \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-iterators\">ECMAScript 6: \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#es6-promise\">ECMAScript 6: \u041e\u0431\u0435\u0449\u0430\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"\/post\/216997\/#array-generics\">Mozilla JavaScript: \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/a><\/li>\n<li><a href=\"\/post\/216997\/#schedule\">\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435: setTimeout, setInterval, setImmediate<\/a><\/li>\n<li><a href=\"\/post\/216997\/#console\">\u041a\u043e\u043d\u0441\u043e\u043b\u044c<\/a><\/li>\n<\/ul>\n<p>   <\/li>\n<li>\n<h5><a href=\"\/post\/216997\/#II\">\u0427\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f: \u0412\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b<\/a><\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"\/post\/216997\/#classify\">\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li>\n<li><a href=\"\/post\/216997\/#dict\">\u0421\u043b\u043e\u0432\u0430\u0440\u0438<\/a><\/li>\n<li><a href=\"\/post\/216997\/#partial-application\">\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"\/post\/216997\/#date-format\">\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#object\">\u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 API<\/a><\/li>\n<li><a href=\"\/post\/216997\/#array\">\u041c\u0430\u0441\u0441\u0438\u0432\u044b<\/a><\/li>\n<li><a href=\"\/post\/216997\/#num\">\u0427\u0438\u0441\u043b\u0430<\/a><\/li>\n<li><a href=\"\/post\/216997\/#escape\">\u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/a><\/li>\n<\/ul>\n<p>   <\/li>\n<li>\n<h5><a href=\"\/post\/216997\/#end\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/h5>\n<\/li>\n<\/ul>\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-216997","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/216997","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=216997"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/216997\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=216997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=216997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=216997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}