Il metodo bind

Il metodo bind permette di collegare un contesto a una funzione. Come primo parametro si deve passare il contesto, e come parametri successivi - i parametri della funzione. Il metodo restituisce una nuova funzione, all'interno della quale this sarà uguale al contesto passato.

Sintassi

javascriptfunzione.bind(contesto, parametro1, parametro2...);

Esempio

Supponiamo di avere un input:

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

Supponiamo che il riferimento a questo input sia memorizzato nella variabile elem:

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

Supponiamo inoltre di avere la seguente funzione func:

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

Usiamo bind per creare una nuova funzione, che sarà una copia della funzione func, ma this in essa sarà sempre uguale a elem:

javascriptlet newFunc = func.bind(elem);

Ora nella variabile newFunc si trova una funzione. Chiamiamola, passando nel primo parametro '1', e nel secondo '2':

javascriptnewFunc('1', '2');

Mettiamo tutto insieme:

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

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

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

Esempio

Non è necessario memorizzare il risultato dell'operazione di bind in una nuova funzione newFunc, si può semplicemente sovrascrivere func:

javascriptfunc = func.bind(elem);

Vedi anche

  • il metodo call,
    che chiama una funzione con un contesto
  • il metodo apply,
    che chiama una funzione con un contesto