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
funzione.bind(contesto, parametro1, parametro2...);
Esempio
Supponiamo di avere un input:
<input id="elem" value="text">
Supponiamo che il riferimento a questo input sia memorizzato nella variabile
elem:
let elem = document.querySelector('#elem');
Supponiamo inoltre di avere la seguente funzione
func:
function 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:
let newFunc = func.bind(elem);
Ora nella variabile newFunc si trova
una funzione. Chiamiamola, passando nel primo
parametro '1', e nel secondo '2':
newFunc('1', '2');
Mettiamo tutto insieme:
let 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:
func = func.bind(elem);