Object property names can be strings or Symbols. Anything that is not a Symbol will be converted to a string.
A plain object's toString method will convert it to "[object Object]".
You can see that string if you log the entire object.
let obj1 = {};
obj1.x = "value";
let obj2 = {"key":"value"};
obj2[obj1] = "another value";
console.log(obj2);
console.log(obj1.toString());
This does, of course, mean that if you try to set ob2[obj3] at some point, with another object, then even if obj3 is a different object it will still be converted to the same string and overwrite the previous value.
console.log(obj2);, and see if that helps with the understanding.Symboland anything which is not a Symbol (like your case) will be converted to a string, hence you can check that by doing:console.log(obj2[obj1.toString()]);which will give you the exact result asconsole.log(obj2[obj1]);