Skip to content

WeakSet 是一个类似 Set 的集合

WeakSet 内部存储的对象地址不会影响垃圾回收,正常情况下,没有任何指针指向的数据我们称为不可达的数据,这类数据是会被垃圾回收机制回收掉的,但是使用 WeakSet 后,这个东西里面的地址是不会影响垃圾回收的,也就是说哪怕 WeakSet 里面有一个指针指向某个对象,只要没有其他变量指向它,这个对象依旧会被回收,回收后 WeakSet 中的数据将消失。

基于这个特点,这个 WeakSet 就可以用来记录一些对象,可以通过查看 WeakSet 的方式判断一个对象是否被回收,可以用于性能调试。

weakSet 本身就是用来检测对象的,所以 weakSet 其实只能添加对象,同时他也不能遍历(不是可迭代对象),没有 size 属性和 forEach 方法

WeakMap 是一个类似于 Map 的集合,但是它的键只能是对象,并且键并不会影响垃圾回收,一旦键被垃圾回收,WeakMap 中对应的数据也会消失,这一点和 Set 很类似。

同样,WeakMap 也是不可迭代的对象,没有 size 属性和 forEach 方法。

以笔记为镜,可以知得失