下面是代码段-
var a = {};
b = {
key: "b"
};
c = {
key: "c"
};
a[b] = 123; // Here I am confused how object is used a key
a[c] = 456;
console.log(a[b]); // output is 456
console.log(a[c]); // output is 456
a [b]和a [c]都将打印456。java脚本如何替换a [b]中的b和a [c]中的c。
答案 0 :(得分:2)
对象属性名称是字符串。
无论您尝试使用哪个表达式作为属性名称,它都会隐式转换为字符串。
任何基本对象都将具有返回toString()
的{{1}}方法(因此,两个不同的对象将被转换为相同的字符串并表示 same 属性)。
"[object Object]"
答案 1 :(得分:0)
JavaScript中的对象键为treated as strings。因此,正如@ Sumurai8所指出的,真正发生的是:
var a = {}; // Create a map/hash
b = {key : "b"};
c = {key : "c"};
a[b] = 123; // b.toString() gives `[object Object]`
// Now, the map has: { "[object Object]": 123 }
a[c] = 456; // c.toString() gives `[object Object]`
// Now, the map has: { "[object Object]": 456 }
console.log(a[b]); // b.toString() gives `[object Object]`