先看下下面这个例子:
var test = 111;
var obj = {
a:test,
b:function () {
test=222;
return test;
}
};
console.log(obj.a); //111
console.log(obj.b()); //222
console.log(test); //222
console.log(obj.a); //111
在调用obj.b()这个方法后为什么obj.a的值没变呢?
下图是我的理解:
第一行代码,给test赋值111,即test指向对象A。在对象obj中,a的值为test,即a也指向对象A,值为111。
在调用对象obj的方法b之后,test被赋值为222,即test现在指向对象B。此时a还是指向对象A,值不变,为111。