⊗jsPmDmThsA 357 of 505 menu

Výhoda this v JavaScripte

Z doterajšieho vysvetlenia nie je úplne zrejmá špeciálna výhoda this. Veď vo vnútri obslužnej funkcie bude náš element dostupný – premenná elem bude globálna pre našu funkciu func:

let elem = document.querySelector('#elem'); elem.addEventListener('click', func); function func() { // tu je dostupná premenná elem s našim elementom }

A nie je ťažké si uvedomiť, že obsah this a obsah premennej elem v našom prípade sú rovnaké:

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

V čom je teda špeciálna výhoda this? Prejaví sa, keď máme viacero elementov, a ku každému je priradená tá istá funkcia.

Pozrime sa na príklad. Majme 3 tlačidlá:

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

Získame odkazy na ne do premenných:

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

Priradíme k týmto tlačidlám rovnakú funkciu:

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

A vo vnútri funkcie budeme vypisovať this.value:

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

Dopadne to tak, že máme tri tlačidlá. Kliknutie na každé tlačidlo povedie k zavolaniu funkcie func. Pritom pri každom kliku this bude obsahovať odkaz na to tlačidlo, v ktorom udalosť nastala.

To znamená, že každé kliknutie vypíše do konzoly value toho tlačidla, na ktorom nastalo kliknutie, ale robiť to bude jedna a tá istá funkcia func! To je výhoda použitia this.

Daných je 5 odsekov s nejakými textami. Po kliknutí na ľubovoľný odsek pridajte na koniec jeho textu výkričník.

Dané sú 3 inputy, v ktorých sú zapísané nejaké čísla. Po strate fókusu v ľubovoľnom z inputov umocnite číslo v ňom na druhú.

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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť