Function context changing - garevna/js-course GitHub Wiki
:mortar_board: Биндинг и каррирование
:mortar_board: Изменение контекста
Заглянув в свойство prototype конструктора Function или в свойство __proto__ экземпляра функции, можно обнаружить три метода, которые наследуют все функции от своего создателя:
- apply()
- call()
- bind()
Эти методы обеспечивают возможность гибко манипулировать контекстом вызова функции
Методы apply() и call() позволяют одноразово вызвать функцию в заданном контексте
Они отличаются только способом передачи аргументов
Метод bind() создает новый экземпляр функции с жестко установленным контекстом вызова, который невозможно изменить или "потерять"
Кроме этого, bind() позволяет так же жестко привязать аргументы к новому экземпляру: фактически, указанные аргументы станут постоянными для нового экземпляра функции