{"id":318532,"date":"2021-02-24T15:00:37","date_gmt":"2021-02-24T15:00:37","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=318532"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=318532","title":{"rendered":"JavaScript \u043d\u0430\u043d\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0438 \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u0440\u043c\u043e\u0437\u0430"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u044f\u2026 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u044f\u043b <a href=\"https:\/\/habr.com\/ru\/users\/nin-jin\/\">\u0441\u0432\u043e\u044e \u043f\u0438\u043f\u0438\u0440\u043a\u0443<\/a>, \u043d\u043e \u0443 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043b\u0438\u043d\u0435\u0435\u043a \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u044c \u043c\u0430\u043b\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0445\u0432\u0430\u0442\u0438\u0442 \u044d\u0442\u043e \u0442\u0435\u0440\u043f\u0435\u0442\u044c!\u2026 \u0438 \u0432\u044b\u0441\u0442\u0440\u0443\u0433\u0430\u043b \u0441\u0432\u043e\u044e \u0441 \u043d\u0430\u043d\u043e\u043c\u0435\u0442\u0440\u043e\u0432\u044b\u043c\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u0438 \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f, \u0442\u0435\u0441\u0442\u0430\u043c\u0438, \u0448\u0430\u0440\u0438\u043d\u0433\u043e\u043c \u0438 \u043f\u0440\u043e\u0447\u0438\u043c\u0438 \u0432\u043e\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0438 \u0432\u0430\u0441 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u043f\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e JS \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u044d\u0442\u043e\u0442 \u043a\u0435\u0439\u0441:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/tinyurl.com\/y9dgcz4c\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/08c\/e99\/525\/08ce995255d7eefe8200f9d634674ce2.png\"><\/a><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"nasledstvennyy-keys\">\u041d\u0430\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0435\u0439\u0441<\/h1>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0443 \u043d\u0430\u0441 3 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>\u043c\u043e\u043d\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u0439<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0442\u0438\u043f\u044b \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. JIT \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0434\u0451\u0442 \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u0442\u043e\u0442 \u0436\u0435.<\/li>\n<li><strong>\u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0439<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u043e \u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430 (\u0434\u043e 4 \u0432 Chrome 88, \u0438 \u0434\u043e 7 \u0432 Firefox 85). \u0422\u0443\u0442 JIT \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u043e\u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/li>\n<li><strong>\u043c\u0435\u0433\u0430\u043c\u043e\u0440\u0444\u043d\u044b\u0439<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e. JIT \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u043f\u0440\u043e\u0447\u044c.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>JIT \u0437\u0430 \u0441\u0432\u043e\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u043d\u0435 \u0441\u0440\u0430\u0437\u0443, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b, \u0442\u043e \u043d\u0438 \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c. \u041d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u043c. \u0415\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0435\u0433\u0430\u043c\u043e\u0440\u0444\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (\u0433\u043e\u043b\u0443\u0431\u0430\u044f \u043f\u0438\u043f\u0438\u0440\u043a\u0430), \u0438 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u043e\u0433\u043e (\u043e\u0440\u0430\u043d\u0436\u0435\u0432\u0430\u044f \u043f\u0438\u043f\u0438\u0440\u043a\u0430), \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041c\u0435\u0433\u0430\u043c\u043e\u0440\u0444\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0443 \u0432\u0430\u0441 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u043b\u0430\u0441\u0441 \u0441 10 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0433\u0435\u0442\u0442\u0435\u0440\u043e\u043c, \u0438\u0445 \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">class Base {      p0 = 0     p1 = 1     p2 = 2     p3 = 3     p4 = 4     p5 = 5     p6 = 6     p7 = 7     p8 = 8     p9 = 9      get s() {         return (             + this.p0             + this.p1             + this.p2             + this.p3             + this.p4             + this.p5             + this.p6             + this.p7             + this.p8             + this.p9         )     }  }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u044f\u0442\u043e\u043a \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const Derived = [     class extends Base { n0 = 0 },     class extends Base { n1 = 1 },     class extends Base { n2 = 2 },     class extends Base { n3 = 3 },     class extends Base { n4 = 4 }, ]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c 3 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0432\u0430\u0440\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0442\u0438\u043f\u043e\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const mono = Array.from( {length}, ()=&gt; new Derived[0] ) const poly = Array.from( {length}, (_,i)=&gt; new Derived[i%4] ) const mega = Array.from( {length}, (_,i)=&gt; new Derived[i%5] )<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u0440\u0435\u0434\u044c\u044e\u0441\u0435\u0440\u0430 \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0443, \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e \u2014 JIT \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0435\u0433\u043e \u043f\u043e \u0441\u0430\u043c\u043e\u0435 \u043d\u0435\u0431\u043e\u043b\u0443\u0439\u0441\u044f, \u0437\u0430\u0438\u043d\u043b\u0430\u0439\u043d\u0438\u0432 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041f\u0440\u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0438\u0437-\u0437\u0430 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u043e\u0433\u043e, \u0442\u0430\u043a \u0438 \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 2 \u0440\u0430\u0437\u0430. \u0410 \u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0432\u0441\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0438 \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u0447\u0442\u043e \u0438 \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u044b\u0439.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0440\u0435\u0434\u044c\u044e\u0441\u0435\u0440\u0430 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u2014 \u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0435\u043b\u0430. \u0414\u0435\u043b\u043e \u0442\u0443\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0445\u043e\u0442\u044c \u0441\u0430\u043c \u043a\u043e\u0434 \u0440\u0435\u0434\u044c\u044e\u0441\u0435\u0440\u0430 \u0438 \u043c\u043e\u043d\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u0439, \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0433\u0435\u0442\u0442\u0435\u0440 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043c\u0435\u0433\u0430\u043c\u043e\u0440\u0444\u043d\u044b\u043c, \u0432\u0435\u0434\u044c \u043e\u043d \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 JIT \u0432\u044b\u043f\u0438\u043b\u0438\u043b \u0435\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u044d\u0442\u043e \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u2014 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u043d\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u043c \u0438 JIT \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e. \u042d\u0442\u043e \u0434\u0430\u0441\u0442 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430, \u043d\u043e \u0446\u0435\u043d\u043e\u0439 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u0443\u0442\u043e\u0447\u043d\u044e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u043a\u043e\u0434\u043e\u043c, \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430. \u0410 \u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u043b\u0438\u0448\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<h1 id=\"polevoy-keys\">\u041f\u043e\u043b\u0435\u0432\u043e\u0439 \u043a\u0435\u0439\u0441<\/h1>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0438 \u0435\u0449\u0451 \u043c\u0435\u043d\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0432\u0441\u0451 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u043f\u043e\u043b\u0435\u0439 \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">class A {     p0 = 0     p1 = 0     p2 = 0     p3 = 0     p4 = 0     p5 = 0     p6 = 0     p7 = 0     p8 = 0     p9 = 0 }  class B {     constructor() {         this.p0 = 0         this.p1 = 0         this.p2 = 0         this.p3 = 0         this.p4 = 0         this.p5 = 0         this.p6 = 0         this.p7 = 0         this.p8 = 0         this.p9 = 0     } }  function C() {     this.p0 = 0     this.p1 = 0     this.p2 = 0     this.p3 = 0     this.p4 = 0     this.p5 = 0     this.p6 = 0     this.p7 = 0     this.p8 = 0     this.p9 = 0 }<\/code><\/pre>\n<p>  <\/p>\n<p>Chrome 88 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=let%20res\/sources=%5B%22res%20%3D%20new%20A%22%2C%22res%20%3D%20new%20B%22%2C%22res%20%3D%20new%20C%22%5D\/prefixes=%5B%22class%20A%20%7B%5Cn%20%20%20%20p0%20%3D%200%5Cn%20%20%20%20p1%20%3D%200%5Cn%20%20%20%20p2%20%3D%200%5Cn%20%20%20%20p3%20%3D%200%5Cn%20%20%20%20p4%20%3D%200%5Cn%20%20%20%20p5%20%3D%200%5Cn%20%20%20%20p6%20%3D%200%5Cn%20%20%20%20p7%20%3D%200%5Cn%20%20%20%20p8%20%3D%200%5Cn%20%20%20%20p9%20%3D%200%5Cn%7D%22%2C%22class%20B%20%7B%5Cn%20%20%20%20constructor%28%29%20%7B%5Cn%20%20%20%20%20%20%20%20this.p0%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p1%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p2%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p3%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p4%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p5%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p6%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p7%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p8%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p9%20%3D%200%5Cn%20%20%20%20%7D%5Cn%7D%22%2C%22function%20C%28%29%20%7B%5Cn%20%20%20%20this.p0%20%3D%200%5Cn%20%20%20%20this.p1%20%3D%200%5Cn%20%20%20%20this.p2%20%3D%200%5Cn%20%20%20%20this.p3%20%3D%200%5Cn%20%20%20%20this.p4%20%3D%200%5Cn%20%20%20%20this.p5%20%3D%200%5Cn%20%20%20%20this.p6%20%3D%200%5Cn%20%20%20%20this.p7%20%3D%200%5Cn%20%20%20%20this.p8%20%3D%200%5Cn%20%20%20%20this.p9%20%3D%200%5Cn%7D%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d0a\/4be\/d07\/d0a4bed0750c337798950c0738680fc9.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0438\u043c\u043e \u044d\u0442\u0443 \u0444\u0438\u0447\u0443 \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u043b\u0438 \u0432 V8 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u0438 \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0436\u0434\u0443\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0431\u0430\u0433\u0440\u0435\u043f\u043e\u0440\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0433\u0435\u0440\u043e\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 10 \u0440\u0430\u0437. \u0410 \u0432\u043e\u0442 \u043d\u0430\u0434 Firefox 85 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a\u0438 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=let%20res\/sources=%5B%22res%20%3D%20new%20A%22%2C%22res%20%3D%20new%20B%22%2C%22res%20%3D%20new%20C%22%5D\/prefixes=%5B%22class%20A%20%7B%5Cn%20%20%20%20p0%20%3D%200%5Cn%20%20%20%20p1%20%3D%200%5Cn%20%20%20%20p2%20%3D%200%5Cn%20%20%20%20p3%20%3D%200%5Cn%20%20%20%20p4%20%3D%200%5Cn%20%20%20%20p5%20%3D%200%5Cn%20%20%20%20p6%20%3D%200%5Cn%20%20%20%20p7%20%3D%200%5Cn%20%20%20%20p8%20%3D%200%5Cn%20%20%20%20p9%20%3D%200%5Cn%7D%22%2C%22class%20B%20%7B%5Cn%20%20%20%20constructor%28%29%20%7B%5Cn%20%20%20%20%20%20%20%20this.p0%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p1%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p2%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p3%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p4%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p5%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p6%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p7%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p8%20%3D%200%5Cn%20%20%20%20%20%20%20%20this.p9%20%3D%200%5Cn%20%20%20%20%7D%5Cn%7D%22%2C%22function%20C%28%29%20%7B%5Cn%20%20%20%20this.p0%20%3D%200%5Cn%20%20%20%20this.p1%20%3D%200%5Cn%20%20%20%20this.p2%20%3D%200%5Cn%20%20%20%20this.p3%20%3D%200%5Cn%20%20%20%20this.p4%20%3D%200%5Cn%20%20%20%20this.p5%20%3D%200%5Cn%20%20%20%20this.p6%20%3D%200%5Cn%20%20%20%20this.p7%20%3D%200%5Cn%20%20%20%20this.p8%20%3D%200%5Cn%20%20%20%20this.p9%20%3D%200%5Cn%7D%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/fb5\/429\/aad\/fb5429aadd44bbd17fc7de3e186c3745.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432, V8 \u0443\u043c\u0435\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0435, \u0430 \u0432\u043e\u0442 Firefox \u0434\u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u043e\u0433\u043e, \u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0448\u0435.<\/p>\n<p>  <\/p>\n<h1 id=\"fabrichnyy-keys\">\u0424\u0430\u0431\u0440\u0438\u0447\u043d\u044b\u0439 \u043a\u0435\u0439\u0441<\/h1>\n<p>  <\/p>\n<p>\u0418 \u0440\u0430\u0437 \u0443\u0436 \u043c\u044b \u0437\u0430\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043f\u0440\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0442\u043e \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"https:\/\/mol.hyoo.ru\/\" rel=\"nofollow noopener noreferrer\">$mol<\/a> \u0443 \u043d\u0430\u0441 \u0441\u0442\u043e\u044f\u043b\u0430 \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438. \u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c 3 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e..<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">class Dictionary_base {     constructor( dict ) {         Object.assign( this , dict )     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">class Initializer_base {     constructor( init ) {         if( init ) init( this )     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443 \u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0443\u0441\u0442\u044b\u043c, \u0430 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 Chrome 88 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=let%20res\/sources=%5B%22res%20%3D%20new%20Dictionary%28%7B%5Cn%5Cttitle%3A%20%28%29%3D%3E%20&#039;xxx&#039;%2C%5Cn%5Ctid%3A%20%28%29%3D%3E%20%7B%23%7D%2C%5Cn%5Ctres%3A%20%28%29%3D%3E%20res%2C%5Cn%7D%29%22%2C%22res%20%3D%20new%20Initializer%28%20foo%20%3D%3E%20%7B%5Cn%5Ctfoo.title%20%3D%20%28%29%3D%3E%20&#039;xxx&#039;%5Cn%5Ctfoo.id%20%3D%20%28%29%3D%3E%20%7B%23%7D%2C%5Cn%5Ctfoo.res%20%3D%20%28%29%3D%3E%20res%5Cn%7D%20%29%22%2C%22var%20foo%20%3D%20new%20Empty%5Cnfoo.title%20%3D%20%28%29%3D%3E%20&#039;xxx&#039;%5Cnfoo.id%20%3D%20%28%29%3D%3E%20%7B%23%7D%2C%5Cnfoo.res%20%3D%20%28%29%3D%3E%20res%5Cnres%20%3D%20foo%22%5D\/optimized=true\/postfix\/prefixes=%5B%22class%20Dictionary_base%20%7B%5Cn%5Ctconstructor%28%20dict%20%29%20%7B%5Cn%5Ct%5CtObject.assign%28%20this%20%2C%20dict%20%29%5Cn%5Ct%7D%5Cn%7D%5Cnclass%20Dictionary%20extends%20Dictionary_base%20%7B%5Cn%5Cttitle%28%29%20%7B%20return%20&#039;title&#039;%20%7D%5Cn%5Ctid%28%29%20%7B%20return%200%20%7D%5Cn%5Ctres%28%29%20%7B%20return%20null%20%7D%5Cn%7D%22%2C%22class%20Initializer_base%20%7B%5Cn%5Ctconstructor%28%20init%20%29%20%7B%5Cn%5Ct%5Ctif%28%20init%20%29%20init%28%20this%20%29%5Cn%5Ct%7D%5Cn%7D%5Cnclass%20Initializer%20extends%20Initializer_base%20%7B%5Cn%5Cttitle%28%29%20%7B%20return%20&#039;title&#039;%20%7D%5Cn%5Ctid%28%29%20%7B%20return%200%20%7D%5Cn%5Ctres%28%29%20%7B%20return%20null%20%7D%5Cn%7D%22%2C%22class%20Empty_base%20%7B%20%7D%5Cnclass%20Empty%20extends%20Empty_base%20%7B%5Cn%5Cttitle%28%29%20%7B%20return%20&#039;title&#039;%20%7D%5Cn%5Ctid%28%29%20%7B%20return%200%20%7D%5Cn%5Ctres%28%29%20%7B%20return%20null%20%7D%5Cn%7D%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/4ed\/be3\/c7a\/4edbe3c7a9ad8b619b06bfd95b5a289e.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0445\u0443\u0436\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0437\u0430\u0442\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u044b\u0439 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e. \u0410 \u0432\u043e\u0442 \u0432 Firefox 85 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u043d\u0430\u044f:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=let%20res\/sources=%5B%22res%20%3D%20new%20Dictionary%28%7B%5Cn%5Cttitle%3A%20%28%29%3D%3E%20&#039;xxx&#039;%2C%5Cn%5Ctid%3A%20%28%29%3D%3E%20%7B%23%7D%2C%5Cn%5Ctres%3A%20%28%29%3D%3E%20res%2C%5Cn%7D%29%22%2C%22res%20%3D%20new%20Initializer%28%20foo%20%3D%3E%20%7B%5Cn%5Ctfoo.title%20%3D%20%28%29%3D%3E%20&#039;xxx&#039;%5Cn%5Ctfoo.id%20%3D%20%28%29%3D%3E%20%7B%23%7D%2C%5Cn%5Ctfoo.res%20%3D%20%28%29%3D%3E%20res%5Cn%7D%20%29%22%2C%22var%20foo%20%3D%20new%20Empty%5Cnfoo.title%20%3D%20%28%29%3D%3E%20&#039;xxx&#039;%5Cnfoo.id%20%3D%20%28%29%3D%3E%20%7B%23%7D%2C%5Cnfoo.res%20%3D%20%28%29%3D%3E%20res%5Cnres%20%3D%20foo%22%5D\/optimized=true\/postfix\/prefixes=%5B%22class%20Dictionary_base%20%7B%5Cn%5Ctconstructor%28%20dict%20%29%20%7B%5Cn%5Ct%5CtObject.assign%28%20this%20%2C%20dict%20%29%5Cn%5Ct%7D%5Cn%7D%5Cnclass%20Dictionary%20extends%20Dictionary_base%20%7B%5Cn%5Cttitle%28%29%20%7B%20return%20&#039;title&#039;%20%7D%5Cn%5Ctid%28%29%20%7B%20return%200%20%7D%5Cn%5Ctres%28%29%20%7B%20return%20null%20%7D%5Cn%7D%22%2C%22class%20Initializer_base%20%7B%5Cn%5Ctconstructor%28%20init%20%29%20%7B%5Cn%5Ct%5Ctif%28%20init%20%29%20init%28%20this%20%29%5Cn%5Ct%7D%5Cn%7D%5Cnclass%20Initializer%20extends%20Initializer_base%20%7B%5Cn%5Cttitle%28%29%20%7B%20return%20&#039;title&#039;%20%7D%5Cn%5Ctid%28%29%20%7B%20return%200%20%7D%5Cn%5Ctres%28%29%20%7B%20return%20null%20%7D%5Cn%7D%22%2C%22class%20Empty_base%20%7B%20%7D%5Cnclass%20Empty%20extends%20Empty_base%20%7B%5Cn%5Cttitle%28%29%20%7B%20return%20&#039;title&#039;%20%7D%5Cn%5Ctid%28%29%20%7B%20return%200%20%7D%5Cn%5Ctres%28%29%20%7B%20return%20null%20%7D%5Cn%7D%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a1c\/bd0\/624\/a1cbd0624ad76534e269d63273cd93ef.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u0443\u0442 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0410 \u0442\u0430\u043a \u043a\u0430\u043a Chrome \u0432 \u043b\u044e\u0431\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c Firefox \u0432 \u0441\u0430\u043c\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e\u043c, \u0442\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 Firefox, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u0434\u043b\u044f \u043d\u0430\u0441 \u0441\u043b\u0443\u0447\u0430\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 c <a href=\"https:\/\/mol.hyoo.ru\/#section=view.tree\/source=%24my_app%20%24mol_book2%0A%09Placeholder%20%24mol_page%0A%09%09title%20%5CHello%0A\" rel=\"nofollow noopener noreferrer\">\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430<\/a>.<\/p>\n<p>  <\/p>\n<h1 id=\"solidnyy-keys\">\u0421\u043e\u043b\u0438\u0434\u043d\u044b\u0439 \u043a\u0435\u0439\u0441<\/h1>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0430\u0441 \u0441\u043c\u0443\u0442\u0438\u043b\u0430 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445. \u0412\u0435\u0434\u044c \u0435\u0451 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0446\u0438\u043a\u043b \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u0440\u0438 \u043f\u0438\u043f\u0438\u0440\u043a\u043e\u043c\u0435\u0440\u0441\u0442\u0432\u0435 \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0446\u0438\u043a\u043b \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0435. \u041f\u043e\u0440\u043e\u0439 \u043e\u043d \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439. \u0410 \u043f\u043e\u0440\u043e\u0439 \u2014 \u0434\u0440\u0430\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c, \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0434\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u043f\u043e\u043b\u044f\u043c\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const chain = {} const uid = ()=&gt; Math.random().toString(16).slice(2)  for( let i = 0; i &lt; 100; i++ ){     chain[ uid() ] = i }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0445\u0430\u043a\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const solid = JSON.parse( JSON.stringify( chain ) )<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443, \u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u044b, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0451 \u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0438\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const map = new Map for( let key in chain ) map.set( key, chain[key] )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 Chrome 88 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0446\u0435\u043b\u044c\u043d\u043e\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. <\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=const%20chain%20%3D%20%7B%7D%0Aconst%20uid%20%3D%20%28%29%3D%3E%20Math.random%28%29.toString%2816%29.slice%282%29%0A%0Afor%28%20let%20i%20%3D%200%3B%20i%20%3C%20100%3B%20i%2B%2B%20%29%7B%0A%09chain%5B%20uid%28%29%20%5D%20%3D%20i%0A%7D%0A%0Aconst%20solid%20%3D%20JSON.parse%28%20JSON.stringify%28%20chain%20%29%20%29%0A%0Aconst%20map%20%3D%20new%20Map%0Afor%28%20let%20key%20in%20chain%20%29%20map.set%28%20key%2C%20chain%5Bkey%5D%20%29%0A%0Alet%20res\/sources=%5B%22res%20%3D%20Object.keys%28%20chain%20%29%22%2C%22res%20%3D%20Object.keys%28%20solid%20%29%22%2C%22res%20%3D%20%5B%20...%20map.keys%28%29%20%5D%22%5D\/postfix=%24mol_assert_equal%28%20Object.keys%28%20chain%20%29.length%2C%20100%20%29%0A%24mol_assert_equal%28%20Object.keys%28%20solid%20%29.length%2C%20100%20%29%0A%24mol_assert_equal%28%20map.size%2C%20100%20%29%0A%0Aconst%20first%20%3D%20Object.keys%28%20chain%20%29%5B0%5D%0A%24mol_assert_equal%28%20chain%5Bfirst%5D%2C%20solid%5Bfirst%5D%2C%20map.get%28first%29%20%29\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/bcd\/f58\/3f6\/bcdf583f636e2a2f53970e64342caed6.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0438\u043c\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e\u0435 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435. \u0410 \u0432\u043e\u0442 \u0432 Firefox 85 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u2014 \u0442\u0443\u0442 \u0432\u0441\u0451 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=const%20chain%20%3D%20%7B%7D%0Aconst%20uid%20%3D%20%28%29%3D%3E%20Math.random%28%29.toString%2816%29.slice%282%29%0A%0Afor%28%20let%20i%20%3D%200%3B%20i%20%3C%20100%3B%20i%2B%2B%20%29%7B%0A%09chain%5B%20uid%28%29%20%5D%20%3D%20i%0A%7D%0A%0Aconst%20solid%20%3D%20JSON.parse%28%20JSON.stringify%28%20chain%20%29%20%29%0A%0Aconst%20map%20%3D%20new%20Map%0Afor%28%20let%20key%20in%20chain%20%29%20map.set%28%20key%2C%20chain%5Bkey%5D%20%29%0A%0Alet%20res\/sources=%5B%22res%20%3D%20Object.keys%28%20chain%20%29%22%2C%22res%20%3D%20Object.keys%28%20solid%20%29%22%2C%22res%20%3D%20%5B%20...%20map.keys%28%29%20%5D%22%5D\/postfix=%24mol_assert_equal%28%20Object.keys%28%20chain%20%29.length%2C%20100%20%29%0A%24mol_assert_equal%28%20Object.keys%28%20solid%20%29.length%2C%20100%20%29%0A%24mol_assert_equal%28%20map.size%2C%20100%20%29%0A%0Aconst%20first%20%3D%20Object.keys%28%20chain%20%29%5B0%5D%0A%24mol_assert_equal%28%20chain%5Bfirst%5D%2C%20solid%5Bfirst%5D%2C%20map.get%28first%29%20%29\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c85\/27c\/bee\/c8527cbee45796b5dedc23b4bb63ea22.png\"><\/a><\/p>\n<p>  <\/p>\n<h1 id=\"asinhronnyy-keys\">\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u0435\u0439\u0441<\/h1>\n<p>  <\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043c\u0435\u0440\u0438\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0424\u0438\u0431\u043e\u043d\u0430\u0447\u0447\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function fib_sync(n) {     if( n &lt; 2 ) return 1     return fib_sync( n - 1 ) + fib_sync( n - 2 ) }  function* fib_gen(n) {     if( n &lt; 2 ) return 1     return ( yield* fib_gen( n - 1 ) ) + ( yield* fib_gen( n - 2 ) ) }  async function fib_async(n) {     if( n &lt; 2 ) return 1     return ( await fib_async( n - 1 ) ) + ( await fib_async( n - 2 ) ) }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 Chrome 88 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=let%20res\/sources=%5B%22res%20%3D%20fib_sync%285%29%22%2C%22res%20%3D%20fib_gen%285%29.next%28%29.value%22%2C%22res%20%3D%20fib_async%285%29%5Cn%22%5D\/postfix\/prefixes=%5B%22function%20fib_sync%28n%29%20%7B%5Cn%5Ctif%28%20n%20%3C%202%20%29%20return%201%5Cn%5Ctreturn%20fib_sync%28%20n%20-%201%20%29%20%2B%20fib_sync%28%20n%20-%202%20%29%5Cn%7D%22%2C%22function*%20fib_gen%28n%29%20%7B%5Cn%5Ctif%28%20n%20%3C%202%20%29%20return%201%5Cn%5Ctreturn%20%28%20yield*%20fib_gen%28%20n%20-%201%20%29%20%29%20%2B%20%28%20yield*%20fib_gen%28%20n%20-%202%20%29%20%29%5Cn%7D%22%2C%22async%20function%20fib_async%28n%29%20%7B%5Cn%5Ctif%28%20n%20%3C%202%20%29%20return%201%5Cn%5Ctreturn%20%28%20await%20fib_async%28%20n%20-%201%20%29%20%29%20%2B%20%28%20await%20fib_async%28%20n%20-%202%20%29%20%29%5Cn%7D%5Cn%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/528\/f78\/c86\/528f78c86f9bd98b8d267c9d2076aeec.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0414\u0430, \u0442\u0430\u043a \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u0432\u0441\u0435\u043c\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u2014 \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u0418 \u043f\u0443\u0441\u0442\u044c \u0432\u0430\u0441 \u043d\u0435 \u043e\u0431\u043e\u043b\u044c\u0449\u0430\u044e\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, \u0438\u0431\u043e \u043c\u043e\u044f \u043f\u0438\u043f\u0438\u0440\u043a\u043e\u043c\u0435\u0440\u043a\u0430 \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u0442 \u043b\u0438\u0448\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430. \u041d\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0434\u0451\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0437\u0430\u043c\u0435\u0440 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d. Firefox 85 \u0436\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u0440\u0430 \u043f\u043e\u0434\u0432\u0438\u0441\u0430\u0435\u0442 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043d\u0443\u0442 \u0438 \u0432\u044b\u0435\u0434\u0430\u0435\u0442 \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<p>  <\/p>\n<h1 id=\"naturalnyy-keys\">\u041d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0435\u0439\u0441<\/h1>\n<p>  <\/p>\n<p>\u041d\u0443 \u0434\u0430 \u043b\u0430\u0434\u043d\u043e, \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043d\u0435\u044d\u043a\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u043e\u043d\u044f\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0442\u0430\u043c\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/mol.hyoo.ru\/#section=articles\/search\/author=nin-jin\/repo=HabHub\/article=28\" rel=\"nofollow noopener noreferrer\">$mol_time<\/a><\/li>\n<li><a href=\"https:\/\/momentjs.com\/\" rel=\"nofollow noopener noreferrer\">Moment.js<\/a><\/li>\n<li><a href=\"https:\/\/moment.github.io\/luxon\/\" rel=\"nofollow noopener noreferrer\">Luxon<\/a><\/li>\n<li><a href=\"https:\/\/day.js.org\/\" rel=\"nofollow noopener noreferrer\">Day.js<\/a><\/li>\n<li><a href=\"https:\/\/js-joda.github.io\/js-joda\/\" rel=\"nofollow noopener noreferrer\">js-joda<\/a><\/li>\n<li><a href=\"https:\/\/date-fns.org\/\" rel=\"nofollow noopener noreferrer\">date-fns<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0418 \u043f\u043e\u0435\u0445\u0430\u043b\u0438 \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c. \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u2014 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 ISO8601:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=const%20iso%20%3D%20&#039;2015-07-20T07%3A48%3A28.338Z&#039;%0A%0Alet%20res\/sources=%5B%22res%20%3D%20new%20Date%28%20iso%20%29%22%2C%22res%20%3D%20new%20%24mol_time_moment%28%20iso%20%29%22%2C%22res%20%3D%20moment%28%20iso%20%29%22%2C%22res%20%3D%20luxon.DateTime.fromISO%28%20iso%20%29%22%2C%22res%20%3D%20dayjs%28%20iso%20%29%22%2C%22res%20%3D%20JSJoda.ZonedDateTime.parse%28iso%29%22%2C%22res%20%3D%20dateFns.parse%28%20iso%20%29%22%5D\/postfix\/prefixes=%5Bnull%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fmol_time_all%401.1.12%2Fweb.js&#039;%5Cn%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fmoment.js%2F2.26.0%2Fmoment.min.js&#039;%5Cn%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fluxon%401.24.1%2Fbuild%2Fglobal%2Fluxon.min.js&#039;%5Cn%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fdayjs%401.8.21%2Fdayjs.min.js&#039;%5Cn%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2F%40js-joda%2Fcore%401.11.0%2Fdist%2Fjs-joda.js&#039;%5Cn%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fdate-fns%2F1.30.1%2Fdate_fns.min.js&#039;%5Cn%29%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/61c\/b5a\/0d5\/61cb5a0d5881ef56c997e7a47785574c.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 API \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445, \u043f\u043e\u0442\u043e\u043c \u0438\u0434\u0451\u0442 dayjs, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u043e\u0439 \u043d\u0430\u0434 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c API, \u0438 \u043c\u043e\u0439 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u043e\u0439 \u0438 \u043f\u0430\u0440\u0441\u0438\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u0442\u043e\u043c dateFns, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0442\u044c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 Date, \u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442 \u0435\u0433\u043e \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438, \u043a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u041d\u0443 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0443\u0437\u0435\u0440\u044b.<\/p>\n<p>  <\/p>\n<p>\u0428\u0442\u043e\u0448, \u0437\u0430\u043c\u0435\u0440\u0438\u043c \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u2014 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432 ISO8601:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=const%20iso%20%3D%20&#039;2015-07-20T07%3A48%3A28.338Z&#039;%0A%0Alet%20res\/sources=%5B%22res%20%3D%20iDate.toISOString%28%29%22%2C%22res%20%3D%20iMol.toString%28%29%22%2C%22res%20%3D%20iMoment.toISOString%28%29%22%2C%22res%20%3D%20iLuxon.toUTC%28%29.toISO%28%29%22%2C%22res%20%3D%20iDayJS.toISOString%28%29%22%2C%22res%20%3D%20iJSJoda.toString%28%29%22%5D\/postfix=%24mol_assert_equal%28%0A%09res.replace%28%20%2FZ%24%2F%2C%20&#039;%2B00%3A00&#039;%20%29%2C%0A%09&#039;2015-07-20T07%3A48%3A28.338%2B00%3A00&#039;%2C%0A%29\/prefixes=%5B%22const%20iDate%20%3D%20new%20Date%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fmol_time_all%401.1.10%2Fweb.js&#039;%5Cn%29%5Cnconst%20iMol%20%3D%20new%20%24mol_time_moment%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fmoment.js%2F2.26.0%2Fmoment.min.js&#039;%5Cn%29%5Cnconst%20iMoment%20%3D%20moment%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fluxon%401.24.1%2Fbuild%2Fglobal%2Fluxon.min.js&#039;%5Cn%29%5Cnconst%20iLuxon%20%3D%20luxon.DateTime.fromISO%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fdayjs%401.8.21%2Fdayjs.min.js&#039;%5Cn%29%5Cnconst%20iDayJS%20%3D%20dayjs%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2F%40js-joda%2Fcore%401.11.0%2Fdist%2Fjs-joda.js&#039;%5Cn%29%5Cnconst%20iJSJoda%20%3D%20JSJoda.ZonedDateTime.parse%28%20iso%20%29%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/9ee\/fc6\/5d5\/9eefc65d5c25c64bb995eaaa189b6d3f.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 JSJoda \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0442\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445. \u0410 \u0432\u043e\u0442 <code>dateFns<\/code> \u0442\u0443\u0442 \u043d\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u043c\u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e Date, \u0430 \u0435\u0433\u043e \u043c\u044b \u043f\u043e\u043c\u0435\u0440\u0438\u043b\u0438 \u0441\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0432\u044b\u043c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043e\u0434\u043d\u0430\u043a\u043e, \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435 ISO8601 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0430 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u0440\u0438\u043c \u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=const%20iso%20%3D%20&#039;2015-07-20T07%3A48%3A28.338Z&#039;%0A%0Alet%20res\/sources=%5B%22res%20%3D%20iMol.toString%28&#039;DD.MM.YYYY&#039;%29%22%2C%22res%20%3D%20iMoment.format%28&#039;DD.MM.YYYY&#039;%29%22%2C%22res%20%3D%20iLuxon.toUTC%28%29%5Cn.toFormat%28&#039;dd.MM.yyyy&#039;%29%22%2C%22res%20%3D%20iDayJS.format%28&#039;DD.MM.YYYY&#039;%29%22%2C%22res%20%3D%20iJSJoda.format%28pattern%29%22%5D\/postfix=%24mol_assert_equal%28%20res%2C%20&#039;20.07.2015&#039;%20%29\/prefixes=%5B%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fmol_time_all%401.1.12%2Fweb.js&#039;%5Cn%29%5Cnconst%20iMol%20%3D%20new%20%24mol_time_moment%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fmoment.js%2F2.26.0%2Fmoment.min.js&#039;%5Cn%29%5Cnconst%20iMoment%20%3D%20moment%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fluxon%401.24.1%2Fbuild%2Fglobal%2Fluxon.min.js&#039;%5Cn%29%5Cnconst%20iLuxon%20%3D%20luxon.DateTime.fromISO%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fdayjs%401.8.21%2Fdayjs.min.js&#039;%5Cn%29%5Cnconst%20iDayJS%20%3D%20dayjs%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2F%40js-joda%2Fcore%401.11.0%2Fdist%2Fjs-joda.js&#039;%5Cn%29%5Cnconst%20pattern%20%3D%20JSJoda.DateTimeFormatter.ofPattern%28&#039;dd.MM.yyyy&#039;%29%5Cnconst%20iJSJoda%20%3D%20JSJoda.ZonedDateTime.parse%28%20iso%20%29%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/541\/dc1\/123\/541dc1123af7bc60dd319f5d835fbdd4.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0443\u0436\u0435 \u043e\u0442\u0440\u044b\u0432 JSJoda \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439. \u0412\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c $mol_time \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u0443\u0435\u0442 \u043f\u043e \u043c\u0435\u0440\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0433\u043e \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u043a\u0443\u0434\u0430 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0432 Firefox 85 JSJoda \u0438 \u0432\u043e\u0432\u0441\u0435 \u0441\u043b\u0438\u0432\u0430\u0435\u0442:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefix=const%20iso%20%3D%20&#039;2015-07-20T07%3A48%3A28.338Z&#039;%0A%0Alet%20res\/sources=%5B%22res%20%3D%20iMol.toString%28&#039;DD.MM.YYYY&#039;%29%22%2C%22res%20%3D%20iMoment.format%28&#039;DD.MM.YYYY&#039;%29%22%2C%22res%20%3D%20iLuxon.toUTC%28%29%5Cn.toFormat%28&#039;dd.MM.yyyy&#039;%29%22%2C%22res%20%3D%20iDayJS.format%28&#039;DD.MM.YYYY&#039;%29%22%2C%22res%20%3D%20iJSJoda.format%28pattern%29%22%5D\/postfix=%24mol_assert_equal%28%20res%2C%20&#039;20.07.2015&#039;%20%29\/prefixes=%5B%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fmol_time_all%401.1.12%2Fweb.js&#039;%5Cn%29%5Cnconst%20iMol%20%3D%20new%20%24mol_time_moment%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fmoment.js%2F2.26.0%2Fmoment.min.js&#039;%5Cn%29%5Cnconst%20iMoment%20%3D%20moment%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fluxon%401.24.1%2Fbuild%2Fglobal%2Fluxon.min.js&#039;%5Cn%29%5Cnconst%20iLuxon%20%3D%20luxon.DateTime.fromISO%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Funpkg.com%2Fdayjs%401.8.21%2Fdayjs.min.js&#039;%5Cn%29%5Cnconst%20iDayJS%20%3D%20dayjs%28%20iso%20%29%22%2C%22%24mol_import.script%28%5Cn%5Ct&#039;https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2F%40js-joda%2Fcore%401.11.0%2Fdist%2Fjs-joda.js&#039;%5Cn%29%5Cnconst%20pattern%20%3D%20JSJoda.DateTimeFormatter.ofPattern%28&#039;dd.MM.yyyy&#039;%29%5Cnconst%20iJSJoda%20%3D%20JSJoda.ZonedDateTime.parse%28%20iso%20%29%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c08\/1f8\/911\/c081f89118af1292b87892d93b3ae5fd.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430, \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 Firefox \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u0430 \u0432 JSJoda \u0443\u043f\u043e\u0440\u043e\u043b\u0438\u0441\u044c \u043f\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c. \u0422\u0430\u043a \u0431\u044b\u0432\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0448\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043b\u0438\u0448\u044c \u043f\u043e\u0434 \u043e\u0434\u0438\u043d \u0434\u0432\u0438\u0436\u043e\u043a, \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u0437\u0430\u0431\u0438\u0432\u0430\u0435\u0448\u044c \u043d\u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435. \u0412\u043c\u0435\u0441\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0437\u0434\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0432\u0441\u0451 \u043b\u0435\u0442\u0430\u0435\u0442, \u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0435\u043b\u0435 \u043f\u043e\u043b\u0437\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<h1 id=\"kak-eto-rabotaet\">\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h1>\n<p>  <\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u043e\u0435\u0439 \u043f\u0438\u043f\u0438\u0440\u043a\u043e\u043c\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u0434<\/li>\n<li>\u0432\u0430\u0440\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434<\/li>\n<li>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/li>\n<\/ul>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/#prefixes=%5B%22%2F%2F%20setup%201%22%2C%22%2F%2F%20setup%202%22%5D\/sources=%5B%22%2F%2F%20action%201%22%2C%22%2F%2F%20action%202%22%5D\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/359\/950\/463\/35995046312bf5eaa9502f3c10e98ecf.png\"><\/a><\/p>\n<p>  <\/p>\n<h2 id=\"obschiy-kod\">\u041e\u0431\u0449\u0438\u0439 \u043a\u043e\u0434<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0432\u0430. \u041e\u043d \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d \u043d\u0430 \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0437\u0430\u043c\u0435\u0440\u0430, \u0438 \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435. \u041f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0410 \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432, \u0432\u0435\u0434\u044c \u0432\u0430\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u0440\u044f\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u043e\u0440\u043e\u0439 \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u043a\u0440\u043e\u0441 <code>{#}<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u043e \u043d\u0435 \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u043b\u0438\u044f\u043b\u043e \u043d\u0430 \u0437\u0430\u043c\u0435\u0440\u044b. \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const list = Array.from(     { length: {#} },     (_,i)=&gt; new Date( `2015-07-20T07:48:28.${ i % 1000 }Z` ), })<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"variativnyy-kod\">\u0412\u0430\u0440\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f.<\/li>\n<li><strong>\u0417\u0430\u043c\u0435\u0440\u044f\u0435\u043c\u0430\u044f<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u043c\u043e\u043c \u043a\u043e\u0434\u0435 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043c\u0430\u043a\u0440\u043e\u0441 <code>{#}<\/code>, \u043d\u043e \u0442\u0443\u0442 \u043e\u043d \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0443\u0436\u0435 \u043d\u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0430 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0437\u044f\u0442\u044c \u0438\u0437 \u0440\u0430\u043d\u0435\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0447\u0442\u043e-\u0442\u043e \u0441 \u043d\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">res = list[{#}].toString()<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"rezultaty\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u0434\u0430. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0434\u0432\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>\u041f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u044b\u0439<\/strong>, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0438 \u044d\u0442\u0430 \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442 \u043b\u0438\u0448\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/li>\n<li><strong>\u0420\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u044b\u0439<\/strong>, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u0435\u0451 \u0432\u044b\u0437\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0432\u0438\u0436\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u043e\u0434 \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function measure() {      \/\/ common setup code      \/\/ case setup code      let accum_$qwerty     const case_$qwerty = iter_$qwerty =&gt; {         \/\/ measured code where {#} replaced by iter_$qwerty         accum_$qwerty = iter_$qwerty     }     let time_$qwerty = -performance.now()      case_$qwerty(0);     case_$qwerty(1);     case_$qwerty(2);      \/\/ ...      time_$qwerty += performance.now()     \/\/ teardown code     return time_$qwerty )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u043a\u043e\u0434 \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u043e\u0439 \u0447\u0443\u0442\u043a\u0430 \u0434\u0440\u0443\u0433\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function measure() {      \/\/ common setup code      \/\/ case setup code      let accum_$qwerty     const case_$qwerty = iter_$qwerty =&gt; {         accum_$qwerty = iter_$qwerty     }     let time_$qwerty = -performance.now()      case_$qwerty(0);     \/\/ measured code where {#} replaced by 0     case_$qwerty(1);     \/\/ measured code where {#} replaced by 1     case_$qwerty(2);     \/\/ measured code where {#} replaced by 2      \/\/ ...      time_$qwerty += performance.now()     \/\/ teardown code     return time_$qwerty )<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043e\u043d\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0437\u0430\u043c\u0435\u0440 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434, \u043d\u043e \u0438 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 20 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434. \u0421\u0442\u043e\u0438\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043c\u0435\u0440\u0435 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<h1 id=\"podklyuchenie-bibliotek\">\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a<\/h1>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u043c <a href=\"https:\/\/github.com\/hyoo-ru\/mam_mol\/tree\/master\/import\" rel=\"nofollow noopener noreferrer\">$mol_import<\/a>, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0451 \u0438\u0437 CDN:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const {     $mol_time_moment: Moment,     $mol_time_interval: Interval,     $mol_time_duration: Duration, } = $mol_import.script('https:\/\/unpkg.com\/mol_time_all@1.1.12\/web.js')<\/code><\/pre>\n<p>  <\/p>\n<h1 id=\"testy\">\u0422\u0435\u0441\u0442\u044b<\/h1>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 <a href=\"https:\/\/github.com\/hyoo-ru\/mam_mol\/tree\/master\/assert\" rel=\"nofollow noopener noreferrer\">$mol_assert<\/a>:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">$mol_assert_like( [ 1 ], [ 1 ], [ 2 ] ) \/\/ Not like [1] --- [2]<\/code><\/pre>\n<p>  <\/p>\n<h1 id=\"posleslovie\">\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h1>\n<p>  <\/p>\n<p><a href=\"https:\/\/perf.js.hyoo.ru\/\" rel=\"nofollow noopener noreferrer\">perf.js.hyoo.ru<\/a> \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043d\u0430\u043d\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u0430. \u041f\u0440\u0438\u043c\u0435\u0440\u044f\u0439\u0442\u0435 \u0435\u0433\u043e \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043a\u043e\u0434\u0443, \u043d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c. \u0412\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u2014 \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u0441\u0451 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/hyoo-ru\/bench.hyoo.ru\" rel=\"nofollow noopener noreferrer\">bench.hyoo.ru<\/a> \u2014 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u0434\u043b\u044f \u043d\u0430\u043d\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u0430 \u043a\u043e\u0434\u0430, \u0430 \u0434\u043b\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433\u0430 \u0446\u0435\u043b\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u043d\u0451\u043c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: <a href=\"https:\/\/mol.hyoo.ru\/#section=articles\/search\/author=nin-jin\/repo=HabHub\/article=8\" rel=\"nofollow noopener noreferrer\">bench.hyoo.ru: \u0433\u043e\u0442\u043e\u0432\u0438\u043c JS \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e<\/a>. <\/p>\n<p>  <\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0432\u044b \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e JS \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u043e \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043b\u0438\u0447\u043a\u0443, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u043b\u0443\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c\u0443 \u0447\u0430\u0442\u0443, \u0433\u0434\u0435 \u043c\u044b \u0432 \u043a\u0440\u0443\u0433\u0443 \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c \u0432\u0441\u044f\u043a\u0438\u0435 \u0442\u0430\u043a\u0438\u0435, \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0442\u0435\u043c\u044b.<\/p>\n<\/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=\"https:\/\/habr.com\/ru\/post\/543934\/\"> https:\/\/habr.com\/ru\/post\/543934\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u044f\u2026 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u044f\u043b <a href=\"https:\/\/habr.com\/ru\/users\/nin-jin\/\">\u0441\u0432\u043e\u044e \u043f\u0438\u043f\u0438\u0440\u043a\u0443<\/a>, \u043d\u043e \u0443 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043b\u0438\u043d\u0435\u0435\u043a \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u044c \u043c\u0430\u043b\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0445\u0432\u0430\u0442\u0438\u0442 \u044d\u0442\u043e \u0442\u0435\u0440\u043f\u0435\u0442\u044c!\u2026 \u0438 \u0432\u044b\u0441\u0442\u0440\u0443\u0433\u0430\u043b \u0441\u0432\u043e\u044e \u0441 \u043d\u0430\u043d\u043e\u043c\u0435\u0442\u0440\u043e\u0432\u044b\u043c\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u0440\u043e\u0445\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u0438 \u0440\u0430\u0437\u0433\u043e\u0440\u044f\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f, \u0442\u0435\u0441\u0442\u0430\u043c\u0438, \u0448\u0430\u0440\u0438\u043d\u0433\u043e\u043c \u0438 \u043f\u0440\u043e\u0447\u0438\u043c\u0438 \u0432\u043e\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0438 \u0432\u0430\u0441 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u043f\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e JS \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u044d\u0442\u043e\u0442 \u043a\u0435\u0439\u0441:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/tinyurl.com\/y9dgcz4c\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/08c\/e99\/525\/08ce995255d7eefe8200f9d634674ce2.png\"><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-318532","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318532","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=318532"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318532\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=318532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=318532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}