var a = {};
var b = new Object();
var c = new Object();
a[b] = 123;
a[c] = 456;
console.log(a[b]); //output is 456, why?
console.log(a[c]); //output is 456, why?
这是如何工作的,a[b]
输出是456,为什么?
答案 0 :(得分:3)
由于对象是作为对象键提供的,因此使用toString()将其转换为字符串。
var b = new Object();
console.log(b.toString());
[object Object]
因此,var b
和var c
都会转换为[object Object]
。对象引用如下:
a["[object Object]"] = 123;
a["[object Object]"] = 456;
[object Object]
的最新值为456。
您可以尝试打印值来验证这一点:
a["[object Object]"]
456
a[(new Object()).toString()]
456
答案 1 :(得分:0)
没有意义,但是......
var a = {};
var b = {}; // new Object();
var c = {}; // new Object();
a[b] = 123; // Object in object {'[object Object]': 123}
现在它将被覆盖:
a[c] = 456; // Object in object {'[object Object': 456}
a [c] 等于到a [b];
console.log(a[b]); // Output is 456!
console.log(a[c]); // Output is 456!