在练习几个例子时,我遇到了以下的例子:
var foo = {unique_prop: 1};
var bar = {unique_prop: 2};
var object = {};
object[foo] = 'value';
alert(object[bar]);
两个对象foo和bar被创建,我不明白为什么alert(object[bar]);输出的是"value"。foo和bar之间有什么联系?
另外,稍微变化一下会得到"undefined"的输出,如下例所示。
var foo = {unique_prop: 1};
var bar = {unique_prop: 2};
var object = {};
object["foo"] = 'value';
alert(object[bar]);
默认情况下,[]
符号可以使用字符串 "right"。那么,["some_property"]
和 [some_property]
是相同的吗?
foo
和bar
之间的联系在于,它们在转换为字符串时(所有属性键都是字符串)产生相同的结果。 - Bergi["some_property"]
and[some_property]
the same?*” - 不是。 - Bergi''+foo
会先调用foo.valueOf
,但String(foo)
会先调用foo.toString
。 - Felix Kling