Metoda bind

Metoda bind pozwala przypisać kontekst do funkcji. Jako pierwszy parametr należy przekazać kontekst, a kolejnymi parametrami - parametry funkcji. Metoda zwraca nową funkcję, w której this będzie równe przekazanemu kontekstowi.

Składnia

javascriptfunkcja.bind(kontekst, parametr1, parametr2...);

Przykład

Załóżmy, że mamy input:

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

Załóżmy, że referencja do tego inputa jest zapisana w zmiennej elem:

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

Załóżmy, że mamy również następującą funkcję func:

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

Użyjmy bind, aby utworzyć nową funkcję, która będzie kopią funkcji func, ale this w niej zawsze będzie równe elem:

javascriptlet newFunc = func.bind(elem);

Teraz w zmiennej newFunc znajduje się funkcja. Wywołajmy ją, przekazując w pierwszym parametrze '1', a w drugim '2':

javascriptnewFunc('1', '2');

Zbierzmy wszystko razem:

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

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

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

Przykład

Niekoniecznie trzeba zapisywać wynik działania bind w nowej funkcji newFunc, można po prostu nadpisać func:

javascriptlet func = func.bind(elem);

Zobacz także

  • metoda call,
    która wywołuje funkcję z kontekstem
  • metoda apply,
    która wywołuje funkcję z kontekstem