如MDN中所述,属性名称必须是字符串。
代码,
var foo = {unique_prop: 1}, obj = {};
obj[foo] = 'value';
console.log(obj[foo]);
在MDN,它说,
在SpiderMonkey JavaScript引擎中,此字符串将是" [' object Object']"。
如何将对象类型obj
的属性(字符串文字)存储为?
该属性是否存储为"['unique_prop 1']"
?
答案 0 :(得分:1)
当您从变量创建对象的属性时,JS引擎会对传递的值调用toString()
方法。密钥的实际值由from its type确定。
您可以自己检查此行为:
var foo = {};
foo.toString = function() {
return "toString";
}
var bar = {};
bar[foo] = "prop value";
for (var k in bar) {
console.log(k);
}