var a={};var b={key:1};var c={key:2};a[b]=3;a[c] =4;console.log(a[b]);我個人認為a[b]的內容應該是3,上面的var b和var c都是沒有用處的,但是實際的答案是a[c]為4,所以我有點理解不了了,js中對於物件的解釋是怎樣的呢,這個是怎麼給佔據的?望大神可以解釋一下,感激不盡。 。 。 。 。 。 。
认证高级PHP讲师
我猜你的問題是值為什麼被覆蓋了是吧.Javascript 中,當通過[] 訪問對象屬性時, 方括號中的表達式將會被求值並被轉換成一個字符串 ,呼叫它的toString方法.所以:
[]
toString
var a = {}; b={key:1}; console.log(b.toString()); // [object Object] a[b]=3; console.log(typeof Object.keys(a)[0]); // string, 属性名 b 转换成了字符串.
所以 b 和 c 都轉換成相同的字串 [object Object]. 所以再次賦值就會被覆蓋.
b
c
[object Object]
因為b.toString() 和 c.toString() 都是 [Object object] ,所以就一樣囉
我猜你的問題是值為什麼被覆蓋了是吧.
Javascript 中,當通過
[]
訪問對象屬性時, 方括號中的表達式將會被求值並被轉換成一個字符串 ,呼叫它的toString
方法.所以:
所以
b
和c
都轉換成相同的字串[object Object]
. 所以再次賦值就會被覆蓋.因為b.toString() 和 c.toString() 都是 [Object object] ,所以就一樣囉