⊗jsPmCxInr 433 of 505 menu

Bazele lucrului cu contextul în JavaScript

Să presupunem că avem o funcție func, în interiorul căreia este folosit this:

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

La ce indică this în această funcție? Și nu știm. Nici JavaScript nu știe. Și nici funcția în sine nu știe. Adică, în momentul creării funcției, la ce anume indică this nu este definit. Și acest lucru va fi determinat doar atunci când această funcție va fi apelată.

Să presupunem că avem un câmp de introducere:

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

Să legăm de acest câmp de introducere funcția noastră func astfel încât să se execute la pierderea focusului de către câmp. Acum, în momentul executării funcției this va indica către câmpul nostru de introducere:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // la pierderea focusului va afișa 'text' }

Dar, până la urmă, putem avea nu unul, ci mai multe câmpuri de introducere:

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

Și la fiecare dintre aceste câmpuri de introducere putem lega funcția noastră func. În acest caz, pentru primul element this în momentul apelării funcției va indica către el, iar pentru al doilea - către el.

În practică, aceasta înseamnă că this din interiorul funcției depinde de la care dintre câmpuri am pierdut focusul:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // va afișa fie 'text1', fie 'text2' }

În general, această particularitate a lui this este foarte convenabilă - creăm doar o funcție și o legăm la oricâte câmpuri de introducere. Dacă this nu ar indica către elementul în care a avut loc evenimentul, atunci nu am fi putut face acest lucru - ar fi trebuit pentru fiecare câmp de introducere să creăm câte o funcție proprie cu același cod!

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge