⊗jsPmCxInr 433 of 505 menu

Konteksti töötamise põhitõed JavaScriptis

Oletame, et meil on mingi funktsioon func, mille sees kasutatakse this:

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

Millele osutab this selles funktsioonis? Me ei tea. Ja JavaScript ei tea. Ja funktsioon ise ei tea. See tähendab, et funktsiooni loomise hetkel pole see, millele this täpselt osutab, määratletud. Ja see saab määratletuks alles siis, kui seda funktsiooni kutsutakse.

Oletame, et meil on mingi sisendväli:

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

Seome selle sisendväljaga oma funktsiooni func nii, et see käivitub sisendvälja fookuse kaotamisel. Nüüd funktsiooni käivitumise hetkel this osutab meie sisendväljale:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // fookuse kaotamisel kuvab 'text' }

Kuid meil võib olla mitte üks sisendväli, vaid mitu:

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

Ja me võime seoma oma funktsiooni func igaühega neist sisendväliadest. Sel juhul esimese elemendi puhul this funktsiooni käivitumise hetkel osutab sellele, ja teise puhul - sellele.

Praktikas tähendab see, et this funktsiooni sees sõltub sellest, millisel sisendväljal me kaotasime fookuse:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // kuvab kas 'text1' või 'text2' }

Üldiselt on selline this omadus väga mugav - loome vaid ühe funktsiooni ja seome selle suvalise arvu sisendväliadega. Kui this ei osutaks sellele elemendile, milles sündmus toimus, siis meil ei õnnestuks see - peaksime iga sisendvälja jaoks looma oma funktsiooni sama koodiga!

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu