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