Metod bind

Metod bind veže kontekst za funkciju. Kao prvi parametar treba proslediti kontekst, a sledećim parametrima - parametre funkcije. Metod vraća novu funkciju, unutar koje će this biti jednak prosleđenom kontekstu.

Sintaksa

javascriptfunkcija.bind(kontekst, parametar1, parametar2...);

Primer

Neka imamo input:

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

Neka je referenca na ovaj input zapisana u promenljivu elem:

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

Neka imamo i sledeću funkciju func:

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

Hajde da pomoću bind napravimo novu funkciju, koja će biti kopija funkcije func, ali će this u njoj uvek biti jednak elem:

javascriptlet newFunc = func.bind(elem);

Sada u promenljivoj newFunc leži funkcija. Hajde da je pozovemo, prosledivši u prvi parametar '1', a u drugi '2':

javascriptnewFunc('1', '2');

Hajde da sve sastavimo:

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

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

let newFunc = func.bind(elem);
newFunc('1', '2'); // ispisaće 'text12'

Primer

Nije neophodno rezultat rada bind upisivati u novu funkciju newFunc, može se jednostavno prepisati func:

javascriptlet func = func.bind(elem);

Pogledajte takođe

  • metod call,
    koji poziva funkciju sa kontekstom
  • metod apply,
    koji poziva funkciju sa kontekstom