тк 3 июля праздник (в беларуси), буду не онлайн (по возможности буду отвечать)

Метод bind



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

Синтаксис

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

Пример

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

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

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

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

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

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

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

let newFunc = func.bind(elem);

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

newFunc('1', '2');

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

let 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:

let func = func.bind(elem);

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

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