Metoda bind

Metoda bind permite legarea contextului unei funcții. Ca prim parametru trebuie transmis contextul, iar parametrii următori - parametrii funcției. Metoda returnează o nouă funcție, în interiorul căreia this va fi egal cu contextul transmis.

Sintaxă

javascriptfuncție.bind(context, parametru1, parametru2...);

Exemplu

Să presupunem că avem un câmp de introducere:

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

Să presupunem că referința la acest câmp de introducere este stocată în variabila elem:

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

Să presupunem că avem și următoarea funcție func:

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

Să folosim bind pentru a crea o nouă funcție, care va fi o copie a funcției func, dar this în ea va fi întotdeauna egal cu elem:

javascriptlet newFunc = func.bind(elem);

Acum în variabila newFunc se află o funcție. Să o apelăm, transmitând în primul parametru '1', iar în al doilea '2':

javascriptnewFunc('1', '2');

Să adunăm totul împreună:

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

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

let newFunc = func.bind(elem);
newFunc('1', '2'); // va afișa 'text12'

Exemplu

Nu este obligatoriu să stocăm rezultatul operației bind într-o nouă funcție newFunc, putem pur și simplu suprascrie func:

javascriptfunc = func.bind(elem);

Veți și

  • metoda call,
    care apelează o funcție cu un context
  • metoda apply,
    care apelează o funcție cu un context