Function context changing - garevna/js-course GitHub Wiki

:mortar_board: Биндинг и каррирование


:mortar_board: Изменение контекста

Заглянув в свойство prototype конструктора Function или в свойство __proto__ экземпляра функции, можно обнаружить три метода, которые наследуют все функции от своего создателя:

  • apply()
  • call()
  • bind()

Эти методы обеспечивают возможность гибко манипулировать контекстом вызова функции

Методы apply() и call() позволяют одноразово вызвать функцию в заданном контексте

Они отличаются только способом передачи аргументов

Метод bind() создает новый экземпляр функции с жестко установленным контекстом вызова, который невозможно изменить или "потерять"

Кроме этого, bind() позволяет так же жестко привязать аргументы к новому экземпляру: фактически, указанные аргументы станут постоянными для нового экземпляра функции