在第一个示例中,您将设置现有对象的属性。在第二个示例中,您正在分配一个全新的对象。
a = b = {};a并且
b现在是指向同一对象的指针。因此,当您这样做时:
a.foo = 'bar';
b.foo从此它也设置
a并
b指向同一对象。
然而!
如果您改为这样做:
a = 'bar';
您是说现在
a指向另一个对象。这
a对之前指出的没有影响。
在Javascript中,分配变量和分配属性是2种不同的操作。最好将变量视为指向对象的指针,当您直接将变量分配给变量时,您无需修改任何对象,而只是将变量指向另一个对象。
但是分配一个属性(如
a.foo)将修改
a指向的对象。当然,这还修改了所有其他指向该对象的引用,这仅仅是因为它们都指向同一对象。



