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ă
funcție.bind(context, parametru1, parametru2...);
Exemplu
Să presupunem că avem un câmp de introducere:
<input id="elem" value="text">
Să presupunem că referința la acest câmp de introducere este stocată în variabila
elem:
let elem = document.querySelector('#elem');
Să presupunem că avem și următoarea funcție
func:
function 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:
let 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':
newFunc('1', '2');
Să adunăm totul împreună:
let 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:
func = func.bind(elem);