JavaScript集合引用类型——WeakSet
基本API
- 使用new关键字实例化一个空的WeakSet:
- 弱集合中的值只能是object或者继承自object的类型,尝试使用非对象设置值会抛出TypeError。
- 如果想在初始化时填充弱集合,则构造函数可以接收-一个可迭代对象,其中需要包含有效的值。可迭代对象中的每个值都会按照迭代顺序插入到新实例中:
1 | const val1 = {id: 1}, |
- 初始化之后可以使用add()再添加新值,可以使用has()查询,还可以使用delete()删除:
1 | const ws = new WeakSet(); |
弱值
原理同WeakMap
不可迭代值
- Weakset中的值任何时候都可能被销毁,所以没必要提供迭代其值的能力。
- WeakSet之所以限制只能用对象作为值,是为了保证只有通过值对象的引用才能取得值。如果允许原始值,那就没办法区分初始化时使用的字符串字面量和初始化之后使用的一个相等的字符串了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 姚永坤的小窝!
评论