Context prin variabilă în JavaScript
Soluția este următoarea: în funcția exterioară vom scrie
this în orice variabilă și această variabilă
va fi accesibilă în funcția interioară, la fel
ca toate variabilele (de obicei această variabilă este numită
self). Astfel vom transmite
this din funcția exterioară în cea interioară:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // va afișa 'text'
let self = this; // vom scrie this în orice variabilă, de exemplu, în self
function child() {
console.log(self.value); // va afișa 'text'
}
child();
}
Să presupunem că avem următorul cod:
<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;
}
}
Autorul codului a vrut ca la pierderea focusului
să se afișeze pe ecran pătratul numărului din value
inputului. Cu toate acestea, din anumite motive la pierderea focusului
în consolă apare o eroare. Corectați eroarea
autorului codului. Scrieți un text în care
veți explica autorului codului de ce a apărut
eroarea lui.