📅  最后修改于: 2023-12-03 14:42:27.918000             🧑  作者: Mango
JavaScript WeakSet
是ES6引入的一种新的基本数据类型,是JavaScript的一种集合类型,它只能保存弱对象的引用,不允许存储基本类型的值。与Set
相似,但WeakSet
中的元素只能是对象,并且是被弱引用的,也就是说,如果一个对象在外部调用后被垃圾回收了,那么在WeakSet
中的这个对象也会自动被删除。WeakSet
不支持迭代器。
WeakSet
中的元素只能是对象,不支持存储基本数据类型的值;WeakSet
对元素的引用是弱引用,即如果元素对象在外部代码中被垃圾回收了,那么在WeakSet
中的引用也会被自动清除;WeakSet
不支持迭代器。WeakSet
可以通过以下两种方式创建WeakSet
:
new
关键字创建。//通过new关键字创建
const weakSet = new WeakSet();
//通过可迭代对象创建
const weakSet = new WeakSet([obj1, obj2, obj3]);
const weakSet = new WeakSet();
const obj = {};
weakSet.add(obj);
const weakSet = new WeakSet();
const obj = {};
weakSet.add(obj);
console.log(weakSet.has(obj)); //true
weakSet.delete(obj);
console.log(weakSet.has(obj)); //false
const weakSet = new WeakSet();
const obj = {};
weakSet.add(obj);
console.log(weakSet.has(obj)); //true
由于WeakSet
中的元素只能是对象,并且对元素的引用是弱引用,所以它在以下几个方面有着广泛的应用:
WeakSet
保存缓存对象,当缓存对象在外部被垃圾回收时,也会自动从WeakSet
中删除,避免内存泄漏。WeakSet
保存监听器,当监听器所对应的对象被垃圾回收时,也会自动从WeakSet
中删除,避免内存泄漏。WeakSet
来隐藏数据集合,因为它不能被迭代器访问,这样可以保障数据集合中数据的隐私性。WeakSet
是ES6引入的一种新的基本数据类型,它只能保存弱对象的引用,不允许存储基本类型的值。它对元素的引用是弱引用,所以它被广泛应用于缓存管理、监听器管理和数据集合的隐藏等方面。