Я пытаюсь узнать о JavaScript лексических ограничениях и замыканиях. Я запустил этот пример, используя Node.js, а затем в браузере и получил 2 разных вывода.
проверено на chrome Version 80.0.3987.149 (Official Build) (64-bit)
и Node v12.16.1
var obj1 = {
name: "Pulsar",
bike: function() {
console.log(this.name);
}
}
var obj2 = { name: "Gixxer", bike: obj1.bike };
var name = "Ninja";
var bike = obj1.bike;
bike(); // "Ninja"
obj1.bike(); // "Pulsar"
obj2.bike(); // "Gixxer"
Этот фрагмент кода действует по-другому в Vanilla JavaScript
. Вывод:
Ninja
Pulser
Gixxer
и в NodeJS
вывод:
undefined
Pulsar
Gixxer
Может кто-нибудь объяснить, пожалуйста?