¿Es posible usar un objeto como clave dentro de un objeto?
Encontré que la respuesta es NO pero sin una explicación clara.
Ejemplo:
let user1 = { name: "John Doe" }; let numberOfAnswers = {}; // try to use an object numberOfAnswers[user1] = 234; // try to use user1 object as the key alert(numberOfAnswers) // [object][object]Pero entonces, ¿qué estamos haciendo aquí? ¿Por qué esto parece funcionar? ¿No estamos creando el objeto numberOfAnswers con user1 como clave?
let numberOfAnswers = { user1: { visits: 123; } }¿Es posible usar un objeto como clave dentro de un objeto?
No. Las claves de propiedad son siempre cadenas o Symbol , nunca objetos. Si usa un objeto como clave de propiedad, se convierte implícitamente en una cadena (generalmente) o un Symbol (si el objeto anula la operación "a primitivo").
Sin embargo, puede usar objetos como claves en las instancias de Map .
Pero entonces, ¿qué estamos haciendo aquí? ¿Por qué esto parece funcionar? ¿No estamos creando el objeto numberOfAnswers con user1 como clave?
let numberOfAnswers = { user1: { visits: 123; } }
No. Está creando un objeto con una propiedad cuya clave es la cadena "user1" y cuyo valor es un objeto.