| Set | WeakSet | Map | WeakMap | |
|---|---|---|---|---|
| 语法 | 构造函数 new Set(),生成 Set数据结构,类似数组,无重复成员 (NaN等于自身) |
构造函数new WeakSet(),生成 WeakSet 数据结构,类似 set成员只能是对象,对象弱引用 |
new Map(),类似 js的object,键可以是各种类型的值 (为复杂类型时存的是地址) |
new WeakMap()类似Map,键只能对象(null除外) 键名所引用的对象都是弱引用 |
| 用法 | new Set([1,2,2,3,NaN,NaN])//[1,2,3,NaN] |
new WeakSet([[1],[2]])//{[1],[2]} |
new Map([[{a:'aa'},'aa']])//{{a:'aa'}:'aa'} |
new WeakMap([[{a:'aa'},'aa']])//{{a:'aa'}:'aa'} |
| 属性 | size: 实例总数 |
- | size | - |
| 方法 | add:添加某个值,返回set实例 delete:删除某个值,返回布尔值 has:是否存在这个值,返回布尔值 clear:清除所有成员,无返回值 keys: 返回键名数组 values:返回值数组 entries:返回[键,值]数组 forEach:遍历 (...) : 扩展运算符 |
add:添加对象成员 delete:删除指定的成员 has:某个成员是否存在 无法遍历 |
set(key,value) get(key) has(key) delete(key) clear() keys: 返回键名数组 values:返回值数组 entries:返回[键,值]数组 forEach:遍历 (...):转为数组 [[{a:'aa'},"aa"]] |
set(key,value) get(key) has(key) delete(key) |
垃圾回收机制依赖引用计数,如果一个值得引用次数不为`0`,垃圾回收机制就不会释放这块内存,结束使用该值之后,有时会忘记取消引用,导致内存无法释放,进而可能会引发内存泄漏,weakset 弱引用,都不计入垃圾回收机制,所有不存在这问题。