ES6新增数据结构WeakSet的用法详解

这时我轻轻地闭上了眼睛,我好像来到童话世界,好像在和小鸟讨论秋天的美景,好像在和小草拍秋天的照片。农民伯伯在田野里收获了庄稼,果农们在果园里收获了果子,我们在学校里收获快乐、收获知识、收获成长。

WeakSet和Set类似,同样是元素不重复的集合,它们的区别是WeakSet内的元素必须是对象,不能是其它类型。

特性:

1.元素必须是对象。

添加一个number类型的元素。

const ws = new WeakSet()
ws.add(1)

结果是报类型错误。

TypeError: Invalid value used in weak set

添加一个对象。

const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
console.log(ws.has(a));

添加OK,结果显示:

true

可以通过WeakSet的has方法判断一个元素是否已在集合中。

如果不需要存储元素时,可以使用delete方法删除元素。

2.弱引用,不被计入垃圾回收

添加进WeakSet的元素对象,WeakSet不会对元素对像的引用计数加1,对于被添加进WeakSet的元素对象,只要该元素对象没有被除WeakSet以外的其他对象引用,就会被垃圾回收释放,在WeakSet中的该元素对象自动被释放,不会出现内存泄漏。

因为这一特性,其性能要比map要高,对于存储无顺序要求的,不重复的,临时存储的场景,可以使用它。

const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
a = null
console.log(ws.has(a));

先将对象添加到WeakSet中,然后将对象设成null,然后再下面的has方法判定时,结果显示,表示WeakSet中已经不存在该对象。

false

3.不能遍历

因为其对内部的元素对象是弱引用,随时会被垃圾回收释放掉,所以其不支持size和forEach等遍历方法。

总结

以上所述是小编给大家介绍的ES6新增数据结构WeakSet的用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上就是ES6新增数据结构WeakSet的用法详解。要给用户意想不到的惊喜。更多关于ES6新增数据结构WeakSet的用法详解请关注haodaima.com其它相关文章!

以下您可能有感兴趣的文章:
标签: WeakSet