var foo = {x:1}; {x:1}申请一块内存$1存放此对象 foo变量指向这块内存$1
var bar = foo; bar 也指向$1
foo.x = foo = {x:2}; 此语句未执行时 foo指向$1 foo.x == 1 语句从右向左执行 {x:2}申请一块内存$2 存放此对象 foo 指向此对象 但此时foo.x这个foo还是指向$1这块内存 $1.x = {x:1} 语句执行完毕后 foo就失去了与$1内存的关联
console.log(foo.x)
??=>2
console.log(foo)
??=>{x:2}
console.log(bar)
??=>{x:{x:2}}