⊗jsPmCxInr 433 of 505 menu

Fondamenti del contesto in JavaScript

Supponiamo di avere una funzione func, all'interno della quale viene utilizzato this:

function func() { console.log(this.value); }

A cosa punta this in questa funzione? Non lo sappiamo. E JavaScript non lo sa. E la funzione stessa non lo sa. Cioè, nel momento della creazione della funzione, ciò a cui punta this non è definito. E sarà determinato solo quando questa funzione verrà chiamata.

Supponiamo di avere un input:

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

Colleghiamo a questo input la nostra funzione func in modo che venga eseguita quando l'input perde il focus. Ora, nel momento dell'esecuzione della funzione, this punterà al nostro input:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // alla perdita del focus mostrerà 'text' }

Ma potremmo non avere un solo input, bensì diversi:

<input id="elem1" value="text1"> <input id="elem2" value="text2">

E a ciascuno di questi input possiamo collegare la nostra funzione func. In questo caso, per il primo elemento this nel momento della chiamata della funzione punterà a esso, e per il secondo - a esso.

Nella pratica, questo significa che this all'interno della funzione dipende da quale input ha perso il focus:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // mostrerà 'text1' o 'text2' }

In generale, questa caratteristica di this è molto conveniente - creiamo una sola funzione e la colleghiamo a qualsiasi numero di input. Se this non puntasse all'elemento in cui è avvenuto l'evento, non saremmo in grado di farlo - dovremmo creare per ogni input la propria funzione con lo stesso codice!

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