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. Они делают намного больше,
чем просто собирают код в блоки: они позволяют создавать невероятно мощные ал
горитмические модули. Эта глава была посвящена в основном механике функций -
сухое, но важное введение. Обладая этой информацией, нам будет проще изучать
функции в следующих главах.

