Что меняется при замене метода стрелочной функцией

Обычный метод прочитает obj.value и вернёт 10. Стрелка возьмёт this из внешней области ES-модуля, где он undefined, и чтение value вызовет ошибку.

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

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

Обычный метод прочитает obj.value и вернёт 10. Стрелка возьмёт this из внешней области ES-модуля, где он undefined, и чтение value вызовет ошибку.

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

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

Условие

Сравните const obj = { value: 10, read() { return this.value; } } с read: () => this.value внутри ES-модуля. Как поведёт себя obj.read()?

Ответ

Обычный метод прочитает obj.value и вернёт 10. Стрелка возьмёт this из внешней области ES-модуля, где он undefined, и чтение value вызовет ошибку.

Стрелки удобны для сохранения внешнего контекста callback, но не являются универсальной заменой метода объекта. Даже call(obj) не переназначит их this. Если требуется независимый от получателя доступ, можно явно замкнуть объект или значение, однако это другой контракт и его следует обозначить.

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

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

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

Подробнее