Usando um objeto como uma chave de propriedade em JavaScript

O que está acontecendo neste código?

var a = {a:1};
var b = {b:2};
var c = {};

c[a] = 1;
c[b] === 1 // true!

c[b] = 2;
c[a] === 2 // true!

Especificamente, por que usar olhando para cimab emc retornar o valor que foi armazenado em uma propriedade dea?

O que significa usar um objeto como chave para uma propriedade em JavaScript?

Eu testei isso no Chrome / Node e no Firefox.

questionAnswers(2)

yourAnswerToTheQuestion