认识这个问题起源于一个编程问题
一个数组[1,2,3,'1','2',1]去重以后是[1,2,3,'1','2'],写出数组去重函数。
当时我的第一感觉是使用对象key的唯一性来解决这个问题,不过我观察完元素后心里就很犯嘀咕,1和‘1’的key会不会一样。
经过测试果然是一样的。
有一道类似的问题
var a={},
b={key:'b'},
c={key:'c'};
a[b]=123;
a[c]=456;
console.log(a[b] === 456);//true
这是为什么呢?
意思是说b和c作为了对象的a的属性,但对象的属性必须是string类型,所以编译器就会使用''[object Object]''来代替他们。
其实a就下面这样
拓展