Lo sabemos
let obj1 = {}; obj1.x = "value"; let obj2 = {"key":"value"}; obj2[obj1] = "another value"; console.log(obj2[obj1]);Arriba imprimirá el "otro valor" correctamente en la consola. Necesito entender cómo. ¿Almacena la dirección de obj1 para que la clave coincida con el valor?
Los nombres de las propiedades de los objetos pueden ser cadenas o símbolos. Todo lo que no sea un símbolo se convertirá en una cadena.
El método toString de un objeto simple lo convertirá en "[object Object]" .
Puede ver esa cadena si registra todo el objeto.
let obj1 = {}; obj1.x = "value"; let obj2 = {"key":"value"}; obj2[obj1] = "another value"; console.log(obj2); console.log(obj1.toString()); Esto, por supuesto, significa que si intenta establecer ob2[obj3] en algún momento, con otro objeto, incluso si obj3 es un objeto diferente, se convertirá en la misma cadena y sobrescribirá el valor anterior.