WeakSet
WeakSet 是 JavaScript 中的一种集合类型,它只允许存储对象类型的元素,而不像 Set 那样可以存储任意类型的元素(包括原始值如字符串、数字等)。此外,WeakSet 对其包含的对象引用是弱引用,这意味着如果一个对象仅仅被 WeakSet 引用而没有其他引用指向它,那么这个对象可以被垃圾回收机制回收。
以下是 WeakSet 的几个关键特性:
- 元素必须是对象:你只能向
WeakSet中添加对象,尝试添加非对象(例如,数字、字符串)会抛出类型错误。 - 弱引用:对集合内对象的引用不会阻止垃圾回收机制回收这些对象,这与
Set不同,后者会对元素进行强引用,阻止它们被回收。 - 不可迭代:不像
Set,WeakSet没有提供任何迭代其元素的方法或属性(比如.forEach()或.keys()),因此你不能直接遍历WeakSet中的元素。 - 不透明性:由于上述原因,
WeakSet主要用于维护对象的集合,其中成员资格可以通过特定方式检查,但不适合用来存储需要持久化或遍历的数据。
因此,WeakSet 适用于那些你需要追踪对象集合但是又不想干扰这些对象的垃圾回收的情况。
应用
用于实现某些形式的记忆化(memoization)
对象生命周期管理的功能。