javascript - 關(guān)于對象的一個(gè)問題,哪位可以幫忙解釋一下?
問題描述
var a={};var b={key:1};var c={key:2};a[b]=3;a[c]=4;console.log(a[b]);我個(gè)人認(rèn)為a[b]的內(nèi)容應(yīng)該是3,上面的var b和var c都是沒有用處的,但是實(shí)際的答案是a[c]為4,所以我有點(diǎn)理解不了了,js中對于對象的解釋是怎樣的呢,這個(gè)是怎樣給占據(jù)的?望大神可以解釋一下,感激不盡。。。。。。。
問題解答
回答1:我猜你的問題是值為什么被覆蓋了是吧.Javascript 中,當(dāng)通過 [] 訪問對象屬性時(shí), 方括號(hào)中的表達(dá)式將會(huì)被求值并被轉(zhuǎn)換成一個(gè)字符串,調(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]. 所以再次賦值就會(huì)被覆蓋.
回答2:因?yàn)閎.toString() 和 c.toString() 都是 [Object object] ,所以就一樣啰
