文章詳情頁
javascript - 關(guān)于對象的一個問題,哪位可以幫忙解釋一下?
瀏覽:84日期:2022-11-22 16:58:05
問題描述
var a={};var b={key:1};var c={key:2};a[b]=3;a[c]=4;console.log(a[b]);我個人認(rèn)為a[b]的內(nèi)容應(yīng)該是3,上面的var b和var c都是沒有用處的,但是實際的答案是a[c]為4,所以我有點理解不了了,js中對于對象的解釋是怎樣的呢,這個是怎樣給占據(jù)的?望大神可以解釋一下,感激不盡。。。。。。。
問題解答
回答1:我猜你的問題是值為什么被覆蓋了是吧.Javascript 中,當(dāng)通過 [] 訪問對象屬性時, 方括號中的表達(dá)式將會被求值并被轉(zhuǎn)換成一個字符串,調(diào)用它的toString方法.所以:
var a = {};b={key:1};console.log(b.toString()); // [object Object]a[b]=3;console.log(typeof Object.keys(a)[0]); // string, 屬性名 b 轉(zhuǎn)換成了字符串.
所以 b 和 c 均轉(zhuǎn)換成相同的字符串 [object Object]. 所以再次賦值就會被覆蓋.
回答2:因為b.toString() 和 c.toString() 都是 [Object object] ,所以就一樣啰
標(biāo)簽:
JavaScript
排行榜

熱門標(biāo)簽