因為你前面已經宣告 objA 與 objB 都是物件型別
物件裡面的屬性名只能使用字串型別
Javascript 會自動幫你把 objA 與 objB 轉型成字串型別
console.log('objA', objA.toString() ) // "objA" "[object Object]"
所以你檢查 obj 會看到
console.log('obj', obj );
/*
{
"[object Object]": 456
}
*/
因為自動轉型後,屬性名一樣時,後面會覆蓋前面的
obj["[object Object]"] = 123;
obj["[object Object]"] = 456;
解決方法改成使用字串或數字當作屬性名
const obj = {};
const objA = {name:'Alice'};
const objB = {name:'Tom'};
obj['objA'] = objA;
obj['objB'] = objB;