Kontextus változón keresztül JavaScriptben
A megoldás a következő: a külső függvényben írjuk
this bármely változóba, és ez a változó
elérhető lesz a belső függvényben, mint
minden változó (általában ezt a változót
self-nek nevezik). Így továbbítjuk
this-et a külső függvényből a belsőbe:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // kiírja a 'text' értéket
let self = this; // írjuk this bármely változóba, például self-be
function child() {
console.log(self.value); // kiírja a 'text' értéket
}
child();
}
Legyen adott a következő kód:
<input id="elem" value="3">
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', func);
function func() {
alert( square() );
function square() {
return this.value * this.value;
}
}
A kód szerzője azt szerette volna, hogy ha az input fókuszt veszt,
a képernyőn megjelenjen a value négyzete.
Azonban valamiért a fókuszt vesztéskor
hiba jelenik meg a konzolon. Javítsd ki a kód
szerzőjének hibáját. Írd le a magyarázatot,
amelyben elmagyarázod a kód szerzőjének, miért
következett be a hiba.