Page 143 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 143

и хотим удостовериться, что в нем переменной this всегда будет присвоено значение
       bruce, независимо от того, как он будет вызван (даже с функцией call, apply или
       другой функцией bind). Функция bind позволяет сделать так.
                                          e
       const  updateBruce  =  update . b ind ( b ruc ) ;
       updateBruce ( l 9 0 4 ,   " a cto " ) ;
                             r
         11  bruce  теперь  (  п  ате :  "Bruce ",  birthYea :   1 9 0 4 ,   occupa tioп :  "actor" }
                                                r
       updateBruce . c all (madeline,  1 2 7 4 ,   " k ing" )  ;
                                                r
         11  bruce  теперь  (  п  ате :  "Bruce ",  ЬirthYea :   1274,  occupa tioп :  "king"  } ;
         11  тadeline  не  бwro  присвоено !
          Т о т факт, что действие функции bind является постоянным, делает ее потенци­
       альным источником ошибок, которые трудно обнаружить: в результате вы получаете
                                                                            p
       функцию, которую фактически нельзя использовать с функциями call, ap l y   или
       bind (во второй раз). Представьте себе, что функция передается в виде параметра,
       и она, будучи вызванной с помощью функций call или apply в некоем отдаленном
       месте, полностью уверена в правильной привязке this. Я не говорю вам, что Ьind не
       нужно использовать, она весьма полезна, но помните о налагаемых ею ограничениях.
          Вы можете также предоставить функции Ьind  параметры,  которые позволяют
       создать новую функцию, всегда вызываемую с определенными параметрами. Напри­
       мер, если необходима функция update, которая всегда устанавливает год рождения
       bruce равным  1 9 4 9 ,  но все еще позволяет изменять род занятия, вполне можете по­
       ступить следующим образом.
       const  updateBrucel 9 4 9   =  update . bind (bruce,  1 9 4 9 ) ;
                 e
       updateBruc l 9 4 9 ( " s inger,  songwriter" ) ;
                                                  r
           11  bruce  теперь  (  пате:  "Bruce ",  ЬirthYea :   1 9 49,
           1 1    occupa tion :  "singer,  songwriter"  }
       Заключ    е н и е

          Функции - это жизненно важная часть JavaScript. Они делают намного больше,
       чем просто собирают код в блоки: они позволяют создавать невероятно мощные ал­
       горитмические модули. Эта глава была посвящена в основном механике функций -
       сухое,  но важное введение.  Обладая  этой  информацией,  нам будет проще изучать
       функции в следующих главах.
   138   139   140   141   142   143   144   145   146   147   148