前言
大家心里是否产生过这样的疑问:JS 中既然已经有对象这种数据结构,我们为什么还要再单独去使用 Set 或者 Map 呢?
今天我们来梳理一下其中的缘由,从出现的原因开始学习 Set 和 Map。
使用对象模拟集合的弊端
在 Set 和 Map 的标准出现,大家都会使用对象来模拟集合,比如:
var testObj = Object.create(null);
testObj.foo = 'bar';
if(testObj.foo) {
// 执行的一些代码
}
但这样的模拟方式,在某些时刻会产生一些如下的不可避免的问题。
数值类型的 key 会被自动转换为字符串
var testObj = Object.create(null);
testObj[1]= 'foo';
console.log(testObj['1']