3.26

  •  在堆中创建一个对象{n:1},变量a保存了此对象的地址
  • 变量b同样保存了此对象的地址
  • a={n:2}此操作使变量a不在保存最初的地址,保存{n:2}这个对象的地址
  • a.x=?

a.x=a={n:2}这个表达式执行后的结果:

b指向的原始对象新增了一个属性x

a的指向由原始对象变为新对象

表面上看起来,a是先被改变,然后再添加x属性,但事实是a.x此处的a指向的是原始对象,也就是b所指向的原始对象。

为什么?

没有为什么。

总有一天我会知道为什么。

原文地址:https://www.cnblogs.com/flyover/p/14582771.html