A this előnye JavaScriptben
A korábbiakból még nem nyilvánvaló a this
különleges előnye. Hiszen az eseménykezelő függvényen
belül úgyis elérhető lesz az elemünk - hiszen a
elem változó globális lesz a func
függvényünk számára:
let elem = document.querySelector('#elem');
elem.addEventListener('click', func);
function func() {
// itt elérhető az elem változó az elemünkkel
}
És könnyű belátni, hogy a this tartalma
és a elem változó tartalma esetünkben
megegyezik:
let elem = document.querySelector('#elem');
elem.addEventListener('click', func);
function func() {
console.log(elem === this); // true-t ír ki
}
Mi is a this különleges előnye?
Az mutatkozik meg, amikor több elemünk van,
és mindegyikhez ugyanaz a függvény van kötve.
Nézzünk egy példát. Tegyük fel, hogy 3
gombunk van:
<input id="button1" type="submit" value="text1">
<input id="button2" type="submit" value="text2">
<input id="button3" type="submit" value="text3">
Szerezzük meg a hivatkozásokat rájuk változókba:
let button1 = document.querySelector('#button1');
let button2 = document.querySelector('#button2');
let button3 = document.querySelector('#button3');
Kössük ezekhez a gombokhoz ugyanazt a függvényt:
button1.addEventListener('click', func);
button2.addEventListener('click', func);
button3.addEventListener('click', func);
A függvényen belül pedig írjuk ki a this.value-t:
function func() {
console.log(this.value);
}
Az eredmény az, hogy három gombunk van. Bármelyik
gombra kattintva a func függvény hívódik meg.
Eközben minden kattintásnál a this tartalmazni
fogja annak a gombnak a hivatkozását, ahol az esemény
bekövetkezett.
Vagyis minden kattintás a konzolra írja ki annak
a gombnak a value értékét, amelyiken a
kattintás történt, de mindezt ugyanaz a func
függvény teszi! Ez a this használatának előnye.
Adott 5 bekezdés valamilyen szöveggel.
Bármelyik bekezdésre kattintva írj a szöveg
végére egy felkiáltójelet.
Adott 3 inputmező, amelyekben valamilyen
számok vannak. Bármelyik inputmező fókuszvesztésekor
emeld négyzetre a benne lévő számot.