我理解后面的代码,我们在
我猜当被分配给变量
foo
对象上调用警报,该对象有另一个名为baz
的对象作为其属性,baz
对象又有一个名为bar
的方法,该方法返回x
的值。由于词法作用域
(我想是这样的:)), JS编译器/解释器会沿着链条向上查找,在baz
中找到x
并返回1。我猜当被分配给变量
go
,然后从全局作用域调用时,你得到3? 只是想了解后台发生了什么。任何帮助都将不胜感激!
var x = 3;
var foo = {
x: 2,
baz: {
x: 1,
bar: function() {
return this.x;
}
}
}
var go = foo.baz.bar;
alert(go());
alert(foo.baz.bar());
go()
将返回未定义...它不是一个函数,而是一个变量! - kasper Taeymans