Какой вывод получит консоль в примере №22

Консоль выведет 'Ivan'. Метод hi вызывается через user.hi(), поэтому this внутри него указывает на объект user и this.name читает его поле name.

Короткий ответ

Что ответить на собеседовании

Консоль выведет 'Ivan'. Метод hi вызывается через user.hi(), поэтому this внутри него указывает на объект user и this.name читает его поле name.

Подробный разбор

Ответ с пояснениями

Условие

Укажите, какой результат будет выведен в консоль при выполнении следующего кода:

var user = {
  name: "Ivan",
  hi() {
    console.log(this.name)
  }
}

user.hi() // ?

Ответ

Консоль выведет 'Ivan'. Метод hi вызывается через user.hi(), поэтому this внутри него указывает на объект user и this.name читает его поле name.

Запись метода сокращённым синтаксисом не привязывает this навсегда, но вызов с объектом слева от точки задаёт нужный контекст. Если сохранить const fn = user.hi и вызвать fn отдельно, результат может измениться или возникнет ошибка строгого режима. Для приведённого непосредственного вызова неоднозначности нет.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее