Contexte via une variable en JavaScript
La solution est la suivante : dans la fonction externe, enregistrons
this dans n'importe quelle variable et cette variable
sera accessible dans la fonction interne, comme
toutes les variables (généralement cette variable est appelée
self). Ainsi, nous transmettrons
this de la fonction externe à la fonction interne :
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // affichera 'text'
let self = this; // enregistrons this dans n'importe quelle variable, par exemple, dans self
function child() {
console.log(self.value); // affichera 'text'
}
child();
}
Soit le code suivant :
<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;
}
}
L'auteur du code voulait qu'à la perte du focus
le carré du nombre de value
de l'input soit affiché à l'écran. Cependant, pour une raison quelconque, à la perte du focus
une erreur est envoyée dans la console. Corrigez l'erreur
de l'auteur du code. Écrivez un texte dans lequel vous
donnerez une explication à l'auteur du code sur la raison pour laquelle son erreur
est survenue.