let a = {n:1}
let b = a
/**
* 1. a.x 是从原有的对象里重新声明了一个x属性此时为undefined
* 2. 赋值运行符从右往左执行,首先声明了一个新对象为 {n:2}, 并把新对象指针赋值给 a 此时原有的对象仍然未b变量持有
* 3. 赋值a.x 就是给原有对象 的 x属性赋值了 一个 新对象的指针
*/
a.x = a = {n:2}
console.log(a); // {n:2}
console.log(b); // {n:1,x:{n:2}}