js中的weakSet
文章类型:Javascript
发布者:hp
发布时间:2023-05-19
一:定义
1: 是 JavaScript 中的一种集合数据结构,
2:允许你存储一组对象,并且这些对象是弱引用的。
3:对象是无序且唯一的
二:特点
1:弱引用:存储的对象(键、值)是弱引用的,如果一个对象只被 WeakSet 引用,而没有被其他地方引用,那么该对象会被垃圾回收机制回收。
2:不可迭代:是不可迭代的,即不能通过 forEach、for...of 等方式遍历 WeakSet 中的元素
3:无法获取大小:没有类似于size 属性来获取集合的大小
4:操作受限:只能进行添加、删除和判断某个对象是否存在的操作
5:唯一性:对象是唯一的,即同一个对象只能存在于 WeakSet 中一次。如果尝试添加同一个对象多次,只会在 WeakSet 中保留一份
6:使用场景:主要用于存储对象的集合,并且需要在对象不再被其他地方引用时自动清理。一些典型的使用场景包括缓存、对象存储和监听器管理等
三:代码
const ws = new WeakSet();
const obj1 = { name: 'Alice' };
const obj2 = { name: 'Bob' };
ws.add(obj1);
ws.add(obj2);
console.log(ws.has(obj1)); // true
console.log(ws.has(obj2)); // true
ws.delete(obj1);
console.log(ws.has(obj1)); // false
四:总结
1:设计目的是为了解决对象引用导致的内存泄漏问题,并且在对象不再被引用时能够自动进行垃圾回收