⊗jsPmCxInr 433 of 505 menu

Grundlæggende arbejde med kontekst i JavaScript

Lad os sige, at vi har en funktion func, inde i hvilken this bruges:

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

Hvad peger this på i denne funktion? Det ved vi ikke. Og JavaScript ved det ikke. Og selve funktionen ved det ikke. Det vil sige, at i øjeblikket hvor funktionen oprettes, er det, hvad this præcist peger på, ikke defineret. Og det vil først blive bestemt, når denne funktion bliver kaldt.

Lad os sige, at vi har et inputfelt:

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

Lad os knytte vores funktion func til dette inputfelt, så den udføres, når inputfeltet mister fokus. Nu vil this i udførelsens øjeblik pege på vores inputfelt:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // ved tab af fokus vil den udskrive 'text' }

Men vi kan jo have ikke ét inputfelt, men flere:

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

Og til hver af disse inputfelter kan vi knytte vores funktion func. I dette tilfælde vil this for det første element, i funktionens kaldelsesøjeblik, pege på det, og for det andet - på det.

I praksis betyder det, at this inde i funktionen afhænger af, hvilket inputfelt der 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 udskrive enten 'text1' eller 'text2' }

Generelt set er denne egenskab ved this meget bekvem - vi opretter kun én funktion og knytter den til et hvilket som helst antal inputfelter. Hvis this ikke pegede på det element, hvor begivenheden indtraf, ville vi ikke kunne gøre dette - vi ville være nødt til at oprette en separat funktion med den samme kode for hvert inputfelt!

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