⊗jsPmDmThsA 357 of 505 menu

Výhoda this v JavaScriptu

Z toho, co bylo řečeno dříve, zatím není zřejmá speciální výhoda this. Vždyť uvnitř funkce-obsluhy bude náš element přístupný – proměnná elem bude globální pro naši funkci func:

let elem = document.querySelector('#elem'); elem.addEventListener('click', func); function func() { // zde je přístupná proměnná elem s naším elementem }

A není těžké si uvědomit, že obsah this a obsah proměnné elem v našem případě jsou stejné:

let elem = document.querySelector('#elem'); elem.addEventListener('click', func); function func() { console.log(elem === this); // vypíše true }

V čem je tedy speciální výhoda this? Projeví se, když máme více elementů, a ke každému je připojena jedna a ta samá funkce.

Podívejme se na příklad. Předpokládejme, že máme 3 tlačítka:

<input id="button1" type="submit" value="text1"> <input id="button2" type="submit" value="text2"> <input id="button3" type="submit" value="text3">

Získáme odkazy na ně do proměnných:

let button1 = document.querySelector('#button1'); let button2 = document.querySelector('#button2'); let button3 = document.querySelector('#button3');

Připojíme k těmto tlačítkům stejnou funkci:

button1.addEventListener('click', func); button2.addEventListener('click', func); button3.addEventListener('click', func);

A uvnitř funkce budeme vypisovat this.value:

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

Dopadne to tak, že máme tři tlačítka. Kliknutí na každé tlačítko povede k zavolání funkce func. Přitom při každém kliku bude this obsahovat odkaz na to tlačítko, ve kterém událost nastala.

To znamená, že každé kliknutí vypíše do konzole value toho tlačítka, na kterém nastalo kliknutí, ale dělat to bude jedna a ta samá funkce func! To je výhoda používání this.

Je dáno 5 odstavců s nějakými texty. Po kliknutí na jakýkoli odstavec zapište na konec jeho textu vykřičník.

Jsou dána 3 vstupní pole, ve kterých jsou zapsána nějaká čísla. Při ztrátě fokusu v jakémkoli ze vstupních polí umocněte v něm stojící číslo na druhou.

Č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