Metoda bind

Metoda bind slouží k navázání kontextu na funkci. Jako první parametr se předává kontext a následujícími parametry jsou parametry funkce. Metoda vrací novou funkci, uvnitř které bude this rovno předanému kontextu.

Syntaxe

javascriptfunkce.bind(kontext, parametr1, parametr2...);

Příklad

Předpokládejme, že máme vstupní pole:

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

Předpokládejme, že odkaz na toto vstupní pole je uložen v proměnné elem:

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

Předpokládejme také, že máme následující funkci func:

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

Pomocí bind vytvoříme novou funkci, která bude kopií funkce func, ale this v ní bude vždy rovno elem:

javascriptlet newFunc = func.bind(elem);

Nyní je v proměnné newFunc uložena funkce. Zavolejme ji a předejme jí první parametr '1' a druhý '2':

javascriptnewFunc('1', '2');

Shrňme vše dohromady:

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

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

let newFunc = func.bind(elem);
newFunc('1', '2'); // vypíše 'text12'

Příklad

Výsledek práce bind nemusí být nutně uložen do nové funkce newFunc, lze jednoduše přepsat func:

javascriptlet func = func.bind(elem);

Viz také

  • metoda call,
    která volá funkci s kontextem
  • metoda apply,
    která volá funkci s kontextem