Понимание контекста this в методе объекта

Код уже корректен и выводит 1. Обычный метод say получает this === obj, а возвращённая стрелка сохраняет этот контекст при последующем самостоятельном вызове.

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

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

Код уже корректен и выводит 1. Обычный метод say получает this === obj, а возвращённая стрелка сохраняет этот контекст при последующем самостоятельном вызове.

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

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

Условие

Необходимо поправить код так, чтобы при запуске в консоль выводилось значение свойства, равное 1, из заданного объекта.

const obj = {
    a: 1,
    say() {
        return () => {
            console.log(this.a);
        }
    }
}

obj.say()();

Ответ

Код уже корректен и выводит 1. Обычный метод say получает this === obj, а возвращённая стрелка сохраняет этот контекст при последующем самостоятельном вызове.

Первый вызов obj.say() создаёт стрелку внутри метода. Стрелочная функция не имеет собственного this, поэтому второй вызов () не меняет захваченное значение. Дополнительный bind не нужен. Если вместо стрелки вернуть обычную функцию, контекст потеряется; если оторвать сам say от obj до первого вызова, его this тоже потребует отдельной привязки.

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

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

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

Подробнее