Метод bind в JavaScript
Метод 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)