Методот 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,
    кој ја повикува функцијата со контекст