Контекст обычного, привязанного и извлечённого метода

Вывод: Анна, Ольга, undefined. До извлечения метода выполните user.getName = user.getName.bind(user), чтобы read сохранил получателя.

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

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

Вывод: Анна, Ольга, undefined. До извлечения метода выполните user.getName = user.getName.bind(user), чтобы read сохранил получателя.

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

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

Условие

В строгом режиме:

const user = { name: 'Анна', getName() { return this?.name; } };
console.log(user.getName());
console.log(user.getName.call({ name: 'Ольга' }));
const read = user.getName;
console.log(read());

Что выведется и как заранее закрепить Анну для read?

Ответ

Вывод: Анна, Ольга, undefined. До извлечения метода выполните user.getName = user.getName.bind(user), чтобы read сохранил получателя.

Обычная функция получает this из способа вызова. Optional chaining здесь предотвращает исключение при undefined. Привязку следует делать после демонстрационного вызова call, если ожидается именно приведённый вывод первых двух строк: bound-функция уже игнорирует попытку заменить this через call. Саму строку read() менять не требуется.

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

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

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

Подробнее