Using an object as a property key in JavaScript

What does it mean to use an object as a key to a property in JavaScript?

Javascript objects only allow string keys, so your object will first be coerced to a string.

Specifically, why does using looking up b in c return the value that was stored in a property of a?

The string representation of {a: 1} and {b: 2} are both "[object Object]", thus, the property is overwritten.

Edit: If you really need to use objects as keys (I would prefer another solution, if possible), you could use the object’s JSON representation:

c[JSON.stringify(a)] = 1
c[JSON.stringify(b)] = 2

But, again, try to think of a different approach. Perhaps the objects have unique identifiers other than the object itself.

Leave a Comment