将对象用作关键结果始终在最后分配的值中

时间:2018-12-07 11:36:57

标签: javascript

下面是代码段-

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。

2 个答案:

答案 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]`