先看下下面这个例子:
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。