var a = {n:1};
var b = a;
a.x = a = {n:2};
console.log(a.x);
console.log(b.x);
结果我是知道了,但不知道为什么。
var a = {n:1};
var b = a;
a.x = a = {n:2};
console.log(a.x);
console.log(b.x);
结果我是知道了,但不知道为什么。
----原先以为是这样的----
首先,a 与 b 变量引用同一对象,然后,新对象{n: 2} 重写变量 a, 创建并赋值给 a 的成员 x,此时 a 与 b 引用的不是同一对象了。
所以,a.x 输出新对象。 b.x 输出 undefined。
----现在----
再想了一遍,或许是这样的,首先,ab 引用同一对象,然后 a.x = a = {n: 2} ,这里应该是先在 a 与 b 创建 x ,b.x 和 a.x 都指向 a ,a.x = a 把自己给重写了。于是 a.x 输出 undefined ,b.x 输出 {n: 2}。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
新手也来答一下,