var a={n:1}
a.x=a={n:2}
console.log(a.x);
undefined
变量a保存对象{ n : 1 }的内存地址
a. x = a; a对象新增x属性,x属性也指向{ n :1 } 的内存地址, 此时 a 对象结构为
{
n:1,
x:{n:1}
}
随后a = { n : 2 },意思是a重新指向 { n : 2 }这个对象的内存地址,这个对象里面没有x属性;
所以a.x是undefined;
也可以把上面的代码这么解析:
var a={n:1}
a.x={n:1}
a={n:2}
console.log(a.x);
undefined
原文:http://www.cnblogs.com/xuxuxu/p/7940474.html