⊗jsPmCxBM 443 of 505 menu

Binding del contesto con il metodo bind in JavaScript

Il metodo successivo bind consente di legare permanentemente il contesto a una funzione. Questo metodo restituisce una nuova funzione, all'interno della quale this avrà un valore rigidamente impostato.

Vediamo un esempio.

Supponiamo di avere un input:

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

Supponiamo che il riferimento a questo input sia memorizzato in una 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); }

Utilizziamo 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' (ricordo che in elem si trova l'input con value, uguale a 'text'):

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'); // visualizzerà 'text12'

Non è necessario memorizzare il risultato dell'operazione di bind in una nuova funzione newFunc, si può semplicemente sovrascrivere func. Dopo ciò, func sarà la stessa funzione di prima, ma con this rigidamente collegato:

func = func.bind(elem);

Supponiamo di avere il seguente codice:

<input id="elem" value="hello"> let elem = document.getElementById('elem'); function func(name, surname) { console.log(this.value + ', ' + name + ' ' + surname); } // qui scrivete la costruzione con bind() func('John', 'Smit'); // qui dovrebbe visualizzare 'hello, John Smit' func('Eric', 'Luis'); // qui dovrebbe visualizzare 'hello, Eric Luis'

Scrivete nel punto indicato la costruzione con il metodo bind in modo che this all'interno della funzione func punti sempre all'input della variabile elem.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta