Контекст через переменную в JavaScript
Решение следующее: во внешней функции запишем
this в любую переменную и эта переменная
будет доступна во внутренней функции, как
и все переменные (обычно эту переменную называют
self). Таким образом мы передадим
this из внешней функции во внутреннюю:
"use strict";
let elem = document.querySelector('#elem');
elem.addEventListener('blur', parent);
function parent() {
console.log(this.value); // выведет 'text'
let self = this; // запишем this в любую переменную, например, в self
function child() {
console.log(self.value); // выведет 'text'
}
child();
}
Пусть дан такой код:
<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;
}
}
Автор кода хотел, чтобы по потери фокуса
на экран вывелся квадрат числа из value
инпута. Однако, почему-то при потери фокуса
в консоль выдается ошибка. Исправьте ошибку
автора кода. Напишите текст, в котором вы
дадите объяснение автору кода, почему возникла
его ошибка.