Метод bind

Методът bind позволява да се привърже контекст към функция. Като първи параметър трябва да се подаде контекст, а следващите параметри са параметрите на функцията. Методът връща нова функция, в която this ще бъде равен на подадения контекст.

Синтаксис

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

Пример

Нека имаме input поле:

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

Нека референцията към този input бъде записана в променливата 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,
    който извиква функция с контекст