Contexto via variável em JavaScript
A solução é a seguinte: na função externa, vamos atribuir
this a uma variável qualquer e essa variável
estará acessível na função interna, assim como
todas as outras variáveis (normalmente, essa variável é chamada de
self). Dessa forma, passaremos
this da função externa para a interna:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // exibirá 'text'
let self = this; // vamos atribuir this a uma variável qualquer, por exemplo, self
function child() {
console.log(self.value); // exibirá 'text'
}
child();
}
Suponha o seguinte código:
<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;
}
}
O autor do código queria que, ao perder o foco,
o quadrado do número de value
do input fosse exibido na tela. No entanto, por algum motivo, ao perder o foco,
um erro é lançado no console. Corrija o erro
do autor do código. Escreva um texto explicando
para o autor do código por que seu erro ocorreu.