In the first example, you are setting a property of an existing object. In the second example, you are assigning a brand new object.
a = b = {};
a
and b
are now pointers to the same object. So when you do:
a.foo = 'bar';
It sets b.foo
as well since a
and b
point to the same object.
However!
If you do this instead:
a = 'bar';
you are saying that a
points to a different object now. This has no effect on what a
pointed to before.
In JavaScript, assigning a variable and assigning a property are 2 different operations. It's best to think of variables as pointers to objects, and when you assign directly to a variable, you are not modifying any objects, merely repointing your variable to a different object.
But assigning a property, like a.foo
, will modify the object that a
points to. This, of course, also modifies all other references that point to this object simply because they all point to the same object.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…