13 of 17 menu

Napaka this v JavaScript streličnem obravnavalniku

V zadnjem času je postalo modno uporabljati povsod strelične funkcije namesto običajnih. Vendar imajo te funkcije past - ne ohranijo this. Poglejmo, s kakšno težavo se lahko srečamo zaradi tega.

Recimo, da imamo gumb:

<button>text</button>

Pridobimo referenco na ta gumb v spremenljivko:

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

Dodajmo gumbu obravnavalca dogodka, z uporabo strelične funkcije:

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

Tu nas čaka presenečenje: this v strelični funkciji ne bo referencial na element, v katerem se je dogodek zgodil.

Poglejmo, kaj lahko naredimo glede tega.

Rešitev prva

Lahko opustimo uporabo this in uporabimo spremenljivko, na katero je vezan dogodek:

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

Rešitev druga

Element, na katerega je vezan dogodek, lahko dobimo preko event.target:

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

Rešitev tretja

Lahko opustimo strelično funkcijo in uporabimo običajno:

button.addEventListener('click', function() { console.log(this.textContent); });
Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni