13 of 17 menu

Feil med this i JavaScripts arrow-funksjons behandler

I det siste har det blitt mote å bruke pilfunksjoner overalt i stedet for vanlige. Disse funksjonene har imidlertid en ulempe - de beholder ikke this. La oss se på hvilket problem vi kan møte på grunn av dette.

La oss si at vi har en knapp:

<button>text</button>

La oss få en referanse til denne knappen i en variabel:

let button = document.querySelector('button');

La oss legge til en hendelsesbehandler på knappen, ved å bruke en arrow-funksjon:

button.addEventListener('click', () => { console.log(this.textContent); });

Det er her overraskelsen venter på oss: this i arrow-funksjonen vil ikke referere til elementet der hendelsen skjedde.

La oss se hva vi kan gjøre med dette.

Første løsning

Du kan slutte å bruke this og bruke variabelen som hendelsen er bundet til:

button.addEventListener('click', () => { console.log(button.textContent); });

Andre løsning

Du kan få elementet som hendelsen er bundet til via event.target:

button.addEventListener('click', (event) => { console.log(event.target.textContent); });

Tredje løsning

Du kan slutte å bruke arrow-funksjonen og bruke en vanlig funksjon i stedet:

button.addEventListener('click', function() { console.log(this.textContent); });
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