No, you can’t. I’ve got an example for you: var a={},
b={key:'b'},
c={key:'c'}; a[b]=123;
a[c]=456; console.log(a[b]);
console.log(a[c]); Output of both console.log statements will be 456. To understand why it it so, we should use base Object method toString() on both objects. We will see following output: > b.toString();
< "[object Object]"
> c.toString();
< "[object Object]" So when you use object as a key of another object it internally converts to string with value [object Object]. So this is all equal calls: