How to explain object references in ECMAScript terms?
Consider this: var a = {}, b = a; In terms of the spec, b = a boils down to PutValue(b, GetValue(a)) , right? And GetValue(a) uses GetBindingValue("a", strictFlag) abstract operation, which returns "the value" in a . And "the value" is "the object" originally assigned to a . Then "the object" is stored in b , just like any other value would. But what is "the object" precisely? Where does the specification say that values of the Object type behave differently than primitives? Is it only that primitives are immutable, and objects are mutable? I'm asking because we always talk about "object