Что выведет код Senior this, call, apply, bind обновлено
Потеря this при деструктуризации
Вопрос
Что выведет код? По строке на каждый вывод.
const counter = {
n: 5,
get double() { return this.n * 2; },
read() { return this.n; },
};
const { read, double } = counter;
console.log(double);
console.log(counter.read());
try { console.log(read()); } catch (e) { console.log(e.constructor.name); }
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 10, 5, TypeError. Почему так Деструктуризация вызывает геттер сразу и сохраняет значение.
Что выведет
10
5
TypeError
Разбор
Почему так
Деструктуризация вызывает геттер сразу и сохраняет значение. Метод же отрывается от объекта и теряет this. Поэтому методы из объектов и хуков либо не деструктурируют, либо заранее привязывают.
Вывод
10
5
TypeError
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.