Map与WeakMap

一、WeakMap和Map的第一个不同点就是,WeakMap的键必须是对象类型,不能是原始值
二、WeakMap提供的接口与Map相同。

Map与Set

一、在Map和Set中迭代总是按照值插入的顺序进行的,所以我们不能说这些集合是无序的,但是我们不能对元素进行重新排序,也不能直接按其编号来获取元素。

Map的键和Set的值的等值判断

一、Map的键和Set的值的等值判断都基于same-value-zero algorithm
1、判断使用与===相似的规则。
2、-0和+0相等。
3、NaN与自身相等(与===有所不同)

Set与WeakSet

一、与Set对象的主要区别
1、WeakSets中的值必须是对象类型,不可以是别的类型。
2、WeakSet的’weak’指的是,对集合中的对象,如果不存在其他引用,那么该对象将可被垃圾回收。于是不存在一个当前可用对象组成的列表,所有WeakSets不可枚举。

WeakMap与WeakSet

一、WeakMap和WeakSet最明显的局限性就是不能迭代,并且无法获取所有当前内容。那样可能会造成不便,但是并不会阻止WeakMap/WeakSet完成其主要工作 — 成为在其它地方管理/存储“额外”的对象数据。
二、它们都不支持引用所有键或其计数的方法和属性。仅允许单个操作。
三、WeakMap和WeakSet被用作“主要”对象存储之外的“辅助”数据结构。一旦将对象从主存储器中删除,如果该对象仅被用作WeakMap或WeakSet的键,那么它将被自动清除。