Map
作为 ECMAScript 6 的新增特性, Map 是一种新的集合类型,为这门语言带来了真正的键/值存储机制。 Map 的大多数特性都可以通过 Object 类型实现,但二者之间还是存在一些细微的差异。
- Object 只能使用数值、字符串或符号作为键不同, Map 可以使用任何 JavaScript 数据类型作为键;
- 与严格相等一样,在映射中用作键和值的对象及其他“集合”类型,在自己的内容或属性被修改时仍然保持不变:
- 与 Object 类型的一个主要差异是, Map 实例会维护键值对的插入顺序,因此可以根据插入顺序执行迭代操作。
操作方法和属性
- set(),delete(),get(),clear()
- has()
- keys(),values(),entries(),
- size,
- forEach()
WeekMap
- 弱映射中的键只能是 Object 或者继承自 Object 的类型,尝试使用非对象设置键会抛出TypeError。值的类型没有限制。
- 只要键存在,键/值对就会存在于映射中,并被当作对值的引用,因此就不会被当作垃圾回收。
Set
ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。 Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。
- 与 Map 类似, Set 可以包含任何 JavaScript 数据类型作为值。基本上相当于使用严格对象相等的标准来检查值的匹配性。用作值的对象和其他“集合”类型在自己的内容或属性被修改时也不会改变
- Set 会维护值插入时的顺序,因此支持按顺序迭代。
操作方法和属性
- set(),delete(),get(),clear()
- has()
- keys(),values(),entries(),
- size,
- forEach()
WeekSet
- 弱集合中的值只能是 Object 或者继承自 Object 的类型,尝试使用非对象设置值会抛出 TypeError。
- WeakSet 中的“ weak”(弱) ,描述的是 JavaScript 垃圾回收程序对待“弱集合”中值的方式。