ES5 中的 Set 与 Map
在 ES5
中,开发者使用对象属性来模拟 Set
与 Map
,就像这样:
let set = Object.create(null);
set.foo = true;
// checking for existence
if (set.foo) {
// do something
}
本例中的 set
变量是一个原型为 null
的对象,确保在此对象上没有继承属性。使用对象的属性作为需要检查的唯一值在 ES5
中是很常用的方法。当一个属性被添加到 set
对象时,它的值也被设为 true
,因此条件判断语句(例如本例中的 if
语句)就可以简单判断出该值是否存在。
使用对象模拟 Set
与模拟 Map
之间唯一真正的区别是所存储的值。例如,以下例子将对象作为 Map
使用:
let map = Object.create(null);
map.foo = "bar";
// retrieving a value
let value = map.foo;
console.log(value); // "bar"
此代码将字符串值 "bar"
存储在 foo
键上。与 Set
不同,Map
多数被用来提取数据,而不是仅检查键的存在性。