【发布时间】:2013-06-18 22:09:15
【问题描述】:
var x = 9;
var mod = {
x: 81,
assign: function(){
this.x = 9;
x = 3;
},
checkVars: function(){
alert(x + " - " + this.x );
}
};
mod.checkVars(); //9 - 81
mod.assign();
mod.checkVars(); //3 - 9
alert(x); //3
请解释作用域链是如何在这里设置的。为什么x 在checkVars 和assign 中的范围解析会跳过对象mod?
【问题讨论】:
-
mod没有名为x的变量。它有一个名为x的属性。 -
我从未说过
x是一个变量。checkVars只是一个花哨的名字,如果你是认真的。 -
您似乎缺少的是范围链仅适用于变量,而不适用于属性(原型链适用于那些)。
-
@bfavaretto 你是对的。你的提示很好。
标签: javascript oop object scope-chain