var a = {};
var b = {key: 'b'};
var c = {key: 'c'};
var d = [3,5,6];
a[b] = 123;
a[c] = 345;
a[d] = 333;
console.log(a[b]); // 345
console.log(a[c]); // 345
console.log(a[d]); // 333
var a = {};
var b = {key: 'b'};
var c = {key: 'c'};
var d = [3,5,6];
a[b] = 123;
a[c] = 345;
a[d] = 333;
console.log(a[b]); // 345
console.log(a[c]); // 345
console.log(a[d]); // 333
var a = {};
var b = {key: 'b'};
var c = {key: 'c'};
var d = [3,5,6];
a[b] = 123;
上面一行代码:b 是一个对象,把一个对象作为一个对象中的属性时:属性名就为[object Object],把123给这个属性赋值
a[c] = 345;
上面这样代码:同上面的解释,此时[object Object]属性存在,所以赋值345会把123覆盖。
a[d] = 333;
上面这样代码:d 是一个数组,把一个数组作为一个对象中的属性时:属性名就为arrayName.join(','),例如:[1,{a:2},3,4].join(',')//"1,[object Object],3,4",把333给这个属性赋值
所以有下面的输出
console.log(a[b]); // 345
console.log(a[c]); // 345
console.log(a[d]); // 333
你把a打印出来不就知道了吗
{
"[object Object]":345,
"3,5,6":333
}
obj , arr 当做 key的时候会调用toString的方法。
8 回答4.5k 阅读✓ 已解决
6 回答3.1k 阅读✓ 已解决
5 回答2.7k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决