⊗jsPmCxInr 433 of 505 menu

Grunnleggende om kontekst i JavaScript

La oss si at vi har en funksjon func, innenfor hvor this brukes:

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

Hva peker this på i denne funksjonen? Det vet vi ikke. Og JavaScript vet ikke. Og selve funksjonen vet ikke. Det vil si at i øyeblikket funksjonen opprettes, er det ikke bestemt hva this peker på. Og dette vil bare bli bestemt når funksjonen kalles.

La oss si at vi har et input-felt:

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

La oss knytte funksjonen vår func til dette input-feltet så den utføres når input-feltet mister fokus. Nå, i øyeblikket funksjonen utføres, vil this peke på input-feltet vårt:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // vil skrive ut 'text' ved tap av fokus }

Men vi kan jo ha ikke bare ett input-felt, men flere:

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

Og til hvert av disse input-feltene kan vi knytte funksjonen vår func. I dette tilfellet vil this for det første elementet i kalløyeblikket peke på det, og for det andre - på det.

I praksis betyr dette at this inni funksjonen avhenger av hvilket input-felt mister fokus:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // vil skrive ut enten 'text1' eller 'text2' }

I utgangspunktet er denne egenskapen til this veldig praktisk - vi oppretter bare én funksjon og knytter den til et hvilket som helst antall input-felter. Hvis this ikke pekte på det elementet der hendelsen inntraff, ville vi ikke klart dette - vi ville måttet opprette en egen funksjon for hvert input-felt med den samme koden!

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis