Context via een variabele in JavaScript
De oplossing is als volgt: in de externe functie schrijven we
this naar een willekeurige variabele en deze variabele
zal toegankelijk zijn in de interne functie, net
als alle variabelen (meestal wordt deze variabele
self genoemd). Op deze manier geven we
this door van de externe functie naar de interne:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // geeft 'text' weer
let self = this; // schrijf this naar een willekeurige variabele, bijvoorbeeld self
function child() {
console.log(self.value); // geeft 'text' weer
}
child();
}
Stel we hebben de volgende code:
<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;
}
}
De auteur van de code wilde dat bij het verlies van focus
het kwadraat van het getal uit value
van de input op het scherm zou verschijnen.
Echter, om een of andere reden verschijnt er een fout
in de console bij het verlies van focus. Verbeter de fout
van de auteur van de code. Schrijf een tekst waarin u
een uitleg geeft aan de auteur van de code waarom zijn fout
is ontstaan.