Будет выведено Maxim один раз. Вызов myObj.greet() получает this равный myObj, а присваивание const fn = myObj.greet функцию не вызывает.
Что будет выведено в консоль (пример 35)
Будет выведено Maxim один раз. Вызов myObj.greet() получает this равный myObj, а присваивание const fn = myObj.greet функцию не вызывает.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой вывод появится в консоли при выполнении следующего JavaScript‑кода:
const myObj = {
name: 'Maxim',
greet() {
console.log(this.name)
}
};
myObj.greet();
const fn = myObj.greet
Ответ
Будет выведено Maxim один раз. Вызов myObj.greet() получает this равный myObj, а присваивание const fn = myObj.greet функцию не вызывает.
Потеря контекста стала бы заметна только при последующем fn(), которого здесь нет. Не нужно добавлять к результату undefined или ошибку за отсутствующий вызов. Для передачи функции отдельно можно использовать bind(myObj).