【发布时间】:2016-06-14 15:51:56
【问题描述】:
1) 我正在尝试将一系列键值对添加到一个 JS 普通对象,其中键本身就是一个对象。每次我添加一个键值对时,该对象都会被覆盖(见直播here)。
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) 找到了一些解决方案。但我无法理解这里的概念。任何指导将不胜感激。
【问题讨论】:
-
你不能。对象键只能是字符串或符号。你想要一张地图。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
对象键应该是字符串。此外,您在第二个示例中没有指定相同的键,所以显然不会有任何覆盖?
标签: javascript javascript-objects