JavaScript WeakSet对象的用途是什么
介绍: JavaScript的WeakSet对象是一种允许我们存储只被宽松引用的项目的集合。WeakSet与Set不同,它只是一个项目的集合,不包含任意值。它与Set具有相同的特点,不包含重复值。WeakSet与Set的主要区别在于WeakSet是一组对象,而不是某种类型的值。它支持add、has和delete操作,类似于Set,但不支持size、keys()或迭代操作。
语法:
new WeakSet([iterable])
参数:
- iterable: 这是一个可迭代的对象,它的元素将被添加到一个新的WeakSet中。
使用WeakSet对象的优点 :
- WeakSet的内容可以进行垃圾回收。
- 可以降低内存利用率。
- 对于类的标记非常有用。
WeakSet对象的特点:
- WeakSet对象只包含唯一项。
- 如果在WeakSet中没有对存储对象的引用,那么这个对象将被垃圾回收。
- WeakSet中的项不可枚举。因此,它不提供任何获取所请求对象的机制。
- 它支持add、has和delete等方法,但不支持size、keys()或迭代。
与WeakSet对象一起使用的方法:
- add(value) : 在这个方法中,value被追加到WeakSet对象中。
- has(value) : 它返回一个布尔值,指示WeakSet对象中是否存在该值。
- delete(value) : 这个方法从WeakSet中移除一个值。WeakSet.prototype.has(value)然后返回false。
示例1: 在这个示例中,我们将使用WeakSet()构造函数来构建新的WeakSet。这将生成一个新的WeakSet,然后您可以使用它来存储数据。当您使用它来构建一个新的WeakSet时,可以将包含value的可迭代对象作为参数传递给它。要确定给定对象是否存在于WeakSet中,请使用has(value)。
Javascript
const gfg = {},
geeks = {};
const obj = new WeakSet([gfg, geeks]);
// Checking if gfg exists
console.log(obj.has(gfg));
输出结果:
true
示例2: 在这个示例中,我们将使用weakset构造函数创建一个WeakSet对象,然后使用add函数添加值。接着,我们验证了我们添加的对象是否存在。然后,使用delete方法从weakset中删除了对象,然后我们再次验证了对象是否成功删除。
Javascript
const obj = new WeakSet();
const gfg = {};
const geeks = {};
// gfg object added
obj.add(gfg);
console.log(obj.has(gfg)) // true
console.log(obj.has(geeks)) // false
// gfg object removed
obj.delete(gfg);
console.log(obj.has(gfg)) // false
输出:
true
false
false