В указанных условиях выводятся Анна и Глобальное имя. Извлечённая непривязанная функция вызывается с глобальным this в нестрогом режиме.
Что выведет извлечённый метод с глобальным fullname
В указанных условиях выводятся Анна и Глобальное имя. Извлечённая непривязанная функция вызывается с глобальным this в нестрогом режиме.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Код выполняется в браузере как обычный классический script, не module, без strict mode:
var fullname = 'Глобальное имя';
var user = { fullname: 'Анна', read: function () { return this.fullname; } };
console.log(user.read());
var read = user.read;
console.log(read());
Определите вывод.
Ответ
В указанных условиях выводятся Анна и Глобальное имя. Извлечённая непривязанная функция вызывается с глобальным this в нестрогом режиме.
Важно оговорить среду: top-level var классического браузерного script связан с глобальным объектом. В ES-модуле или строгой функции обычный вызов не получает такой this, и обращение к this.fullname может выбросить исключение. Для устойчивого поведения независимо от места вызова используйте user.read.bind(user).