var foo = new Object();
var bar = new Object();
var map = new Object();
map[foo] = "foo";
map[bar] = "bar";
alert(map[foo]); //This alerts bar, but what happens to foo?
这是帮助您理解如何在 JS 中分配键
的问题之一。当然,我立即尝试了以下方法:
for(var prop in map){
console.log(prop + ' ' + map[prop]);
} //[object Object] bar undefined
然后简单地:
map //This returns Object {[object Object]: "bar"}
什么?
更新:
感谢您的回答,但是 foo
发生了什么?是否存在某种我从未听说过的删除
机制?
最佳答案
对象括号表示法将其赋予的值强制为字符串。由于您给它一个对象,它会调用该对象的 toString 方法并将 key 保存为 [object Object] 。
Foo 被 bar 覆盖,因为您保存到相同的键,[object Object]
。
即。你的对象看起来像这样:
{
"[object Object]": "bar"
}
关于javascript - 为什么这个属性赋值会覆盖 JavaScript 中先前的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32877696/