Метод bind

Метод bind привязать контекст к функции. В качестве первого параметра следует передавать контекст, а последующими параметрами - параметры функции. Метод возвращает новую функцию, внутри которой this будет равным переданному контексту.

Синтаксис

javascriptфункция.bind(контекст, параметр1, параметр2...);

Пример

Пусть у нас есть инпут:

html<input id="elem" value="text">

Пусть ссылка на этот инпут записана в переменную elem:

javascriptlet elem = document.querySelector('#elem');

Пусть у нас также есть следующая функция func:

javascriptfunction func(param1, param2) {
  console.log(this.value + param1 + param2);
}

Давайте с помощью bind сделаем новую функцию, которая будет копией функции func, но this в ней всегда будет равен elem:

javascriptlet newFunc = func.bind(elem);

Теперь в переменной newFunc лежит функция. Давайте вызовем ее, передав в первый параметр '1', а во второй '2':

javascriptnewFunc('1', '2');

Давайте соберем все вместе:

javascriptlet elem = document.getElementById('elem');

function func(param1, param2) {
  console.log(this.value + param1 + param2);
}

let newFunc = func.bind(elem);
newFunc('1', '2'); // выведет 'text12'

Пример

Не обязательно записывать результат работы bind в новую функцию newFunc, можно просто перезаписать func:

javascriptlet func = func.bind(elem);

Смотрите также

  • метод call,
    который вызывает функцию с контекстом
  • метод apply,
    который вызывает функцию с контекстом