Kontekst preko promenljive u JavaScript-u
Rešenje je sledeće: u spoljnoj funkciji ćemo upisati
this u bilo koju promenljivu i ta promenljiva
će biti dostupna u unutrašnjoj funkciji, kao
i sve promenljive (obično se ta promenljiva naziva
self). Na taj način ćemo preneti
this iz spoljne funkcije u unutrašnju:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // ispisaće 'text'
let self = this; // upisaćemo this u bilo koju promenljivu, na primer, u self
function child() {
console.log(self.value); // ispisaće 'text'
}
child();
}
Neka je dat ovakav kod:
<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;
}
}
Autor koda je želeo da se pri gubitku fokusa
na ekran ispiše kvadrat broja iz value
input polja. Međutim, iz nekog razloga pri gubitku fokusa
u konzolu se ispisuje greška. Ispravite grešku
autora koda. Napišite tekst u kome ćete
objasniti autoru koda zašto je došlo do
njegove greške.