name: "Peter",
printMessage() {
console.log(Hello, ${this.name}!);
}
};
var printMessage = user.printMessage;
printMessage();
объясните пожалуйста, почему в консоли браузера результат вызова функции:
Hello, John!
а если в VS Code кликнуть на кнопку play, в терминале показывает:
Hello, undefined!
?
(там телега схавала кавычки обратные в консоль логе)
т.е. в терминале VS Code и в окне разработчика (консоли браузера) получается разный глобальный объект? отличается контекст вызова?
посмотри что дает просто this в терминале, может там глобального объекта нет
Спасибо!!) в терминале показывает {} а в браузере Window
Когда ты объявляешь var в глобальной области видимости браузера, то создаётся свойство в window, в нестрогом режиме this по умолчанию ссылается на window, соответственно this.name это window.name. В nodejs всё выполняется в обёртке модуля, поэтому в аналог window в ноде, под названием global не получает свойство name. Но если ты напишешь global.name = 'John' вместо var name = 'John', то получится иначе.
Обсуждают сегодня