13 of 17 menu

Chyba this v šipkovém obslužném programu JavaScript

V poslední době se stalo módní používat všude šipkové funkce místo obyčejných. Tyto funkce však mají háček - neuchovávají this. Pojďme se podívat, na jaký problém můžeme kvůli tomu narazit.

Předpokládejme, že máme tlačítko:

<button>text</button>

Získáme odkaz na toto tlačítko do proměnné:

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

Přidáme na tlačítko obslužný program události pomocí šipkové funkce:

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

Zde na nás čeká překvapení: this v šipkové funkci nebude odkazovat na element, ve kterém událost nastala.

Pojďme se podívat, co se s tím dá dělat.

Řešení první

Můžeme se vzdát používání this a použít proměnnou, na kterou je událost navázána:

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

Řešení druhé

Můžeme získat element, na který je událost navázána, pomocí event.target:

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

Řešení třetí

Můžeme se vzdát šipkové funkce a použít obyčejnou:

button.addEventListener('click', function() { console.log(this.textContent); });
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout