JavaScript对象属性只能是字符串的问题

2018-05-25  本文已影响99人  卓三阳
认识这个问题起源于一个编程问题

一个数组[1,2,3,'1','2',1]去重以后是[1,2,3,'1','2'],写出数组去重函数。
当时我的第一感觉是使用对象key的唯一性来解决这个问题,不过我观察完元素后心里就很犯嘀咕,1和‘1’的key会不会一样。
经过测试果然是一样的。


res.png

有一道类似的问题

var a={},
    b={key:'b'},
    c={key:'c'};

a[b]=123;
a[c]=456;

console.log(a[b] === 456);//true

这是为什么呢?


answer.png

意思是说b和c作为了对象的a的属性,但对象的属性必须是string类型,所以编译器就会使用''[object Object]''来代替他们。
其实a就下面这样


a.png

拓展


extend.png

参考
Why a[c] override a[b]? [duplicate]

上一篇下一篇

猜你喜欢

热点阅读