javascript - 關於物件的一個問題,哪位可以幫忙解釋一下?
PHP中文网
PHP中文网 2017-06-10 09:48:32
0
2
468

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中文网
PHP中文网

认证高级PHP讲师

全部回覆(2)
黄舟

我猜你的問題是值為什麼被覆蓋了是吧.
Javascript 中,當通過[] 訪問對象屬性時, 方括號中的表達式將會被求值並被轉換成一個字符串 ,呼叫它的toString方法.
所以:

var a = {};
b={key:1};
console.log(b.toString()); // [object Object]
a[b]=3;
console.log(typeof Object.keys(a)[0]);    // string, 属性名 b 转换成了字符串.

所以 bc 都轉換成相同的字串 [object Object]. 所以再次賦值就會被覆蓋.

伊谢尔伦

因為b.toString() 和 c.toString() 都是 [Object object] ,所以就一樣囉

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!