2 回答

TA貢獻1876條經(jīng)驗 獲得超6個贊
對象的key值是一個字符串,b與c都是一個對象,將他們作為a的key值會先轉(zhuǎn)化為字符串,對象轉(zhuǎn)化為字符串后是[object Object]
,所以a[b]=123就是a['[object Object]']=123,執(zhí)行a[c] = 345;的時候會把a['[object Object]']重新賦值為345,所以打印a[c]與a[d]就是對a['[object Object]']的取值,結果都是345
數(shù)組d轉(zhuǎn)化為字符串的結果是3,5,6
,所以a[d] = 333;就是a['3,5,6'] = 333;,取值同理就是取a['3,5,6']的值
補充

TA貢獻1842條經(jīng)驗 獲得超22個贊
Object內(nèi)置toString 和 valueOf 方法;
這種情況a[b] = 123 會默認調(diào)用對象的toString().
a[b] = 123就是a['[object Object]'] = 123
a[c]里面的對象c通向會調(diào)用toString() 也是a['[object Object]'] = 345;
而數(shù)組的toStirng() = '[object Array]';
最終a應該是{'[object Object]':345,'[object Array]':333};
ps:默認調(diào)用toString()是什么情況我要先查查先。
錯了。。。。應該是a {'[object Object]':345,'3,5,6':333};
添加回答
舉報