Выбор ответа Junior this, call, apply, bind спрашивают часто обновлено
Стрелка как метод объекта
Вопрос
Код выполняется в ES-модуле. Что произойдёт?
const user = {
name: 'Аня',
hi: () => this.name,
};
console.log(user.hi());
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Бросит TypeError. У стрелки нет своего this, она берёт его из окружения, где создана.
Варианты ответа
- Выведет
'Аня' - Выведет
undefined - Выведет пустую строку
- Бросит TypeErrorправильный ответ
Разбор
У стрелки нет своего this, она берёт его из окружения, где создана. Литерал объекта области видимости не создаёт, так что окружением стал верхний уровень модуля, где this равен undefined. Чтение undefined.name бросает TypeError. 'Аня' было бы с обычным методом hi() { return this.name; }. undefined или пустая строка могли бы получиться в нестрогом классическом скрипте, где this наверху это window (у которого есть свойство name), но в модуле так не бывает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.