Kontext via variabel i JavaScript
Lösningen är följande: i den yttre funktionen skriver vi
this till valfri variabel och denna variabel
kommer att vara tillgänglig i den inre funktionen, som
alla variabler (vanligtvis kallas denna variabel
self). På så sätt överför vi
this från den yttre funktionen till den inre:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // skriver ut 'text'
let self = this; // skriver this till valfri variabel, till exempel self
function child() {
console.log(self.value); // skriver ut 'text'
}
child();
}
Anta att vi har följande 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;
}
}
Författaren av koden ville att vid förlust av fokus
ska kvadraten på talet från value
i inputfältet visas på skärmen. Men av någon anledning visas ett fel
i konsolen vid förlust av fokus. Råtta författarens fel.
Skriv en text där du
ger en förklaring till författaren om varför hans fel
uppstod.