首先请看以下代码:
var foo={n:1};
var bar=foo;//bar={n:1}
foo.x=foo={n:2};//foo.x:undefined;
//foo:{n:2}
2. ‘.’的优先级高于=;
3.js解析第三行代码时:首先会确定所有指针的位置,foo.x是否是指针,所以先创建指针,所以为:foo{n:1,x:null}
其次,看foo是否为指针,foo指向{n:1,x:undefined};
最后从右向左依次赋值,
即:foo指向了新的对象{n:2}
而foo.x为指向原来对象的x指针,即原来对象被赋值为:{n:1,x:{n:2}}
如下图所示