1)我想將一個鍵值對序列添加到JS普通對象中,其中鍵本身就是一個對象。每次添加鍵值對時,對象都會被覆蓋(請參閱實況here)。將鍵值對添加到JavaScript對象,其中鍵是一個對象
var x = {};
var y = {
'name': 'cat',
'note': 'lazy animal'
}
var yy = 'meow'
x[{
'name': 'dog',
'note': 'loyal animal'
}] = 'bhow'
x[y] = yy
for(var k in x) {
console.log(k);
console.log(x[k]);
}
控制檯輸出:
"[object Object]"
"meow"
2)本(覆蓋的行爲)時,關鍵是一個字符串不會發生(見現場here)。
var x = {};
var y = 'cat'
var yy = 'meow'
x['dog'] = 'bhow'
x[y] = yy
for(var k in x) {
console.log(k);
console.log(x[k]);
}
控制檯輸出:
"dog"
"bhow"
"cat"
"meow"
想明白爲什麼會這樣?
我想通過其他問題(here)解決我們的一些解決方案。但我無法理解這裏的概念。任何指導將不勝感激。
你不能。對象鍵只能是字符串或符號。你想要一張地圖。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map –
對象鍵應該是字符串。而且,你沒有在第二個例子中指定相同的密鑰,所以顯然不會有覆蓋? –