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

认识这个问题起源于一个编程问题

一个数组[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]

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容