当前位置: 首页 > 编程笔记 >

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

辛锦
2023-03-14
本文向大家介绍ES6新增数据结构WeakSet的用法详解,包括了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中的 Set Map 数据结构学习总结,包括了详解ES6中的 Set Map 数据结构学习总结的使用技巧和注意事项,需要的朋友参考一下 ES6中的 Set 数据结构 ES6 新增了一种 Set 数据结构。它类似数组。 最重要的一点是 Set中的结构成员没有重复的, 可用这点 一行代码实现数组去重。 Set 本身是一个构造函数。通过 new Set() 来创建Set结构。 通

  • 本文向大家介绍ES6 新增的创建数组的方法(小结),包括了ES6 新增的创建数组的方法(小结)的使用技巧和注意事项,需要的朋友参考一下 在ES6之前,创建数组的方式有2种: 一: 通过数组字面量 二: 通过new Array()创建数组 在大多数情况下new Array()运行良好: 但是new Array()有一种诡异的情况: 当我们给new Array()传递单个数字参数时,这个数字不是作为数

  • 本文向大家介绍ES6新增的数组知识实例小结,包括了ES6新增的数组知识实例小结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6新增的数组知识。分享给大家供大家参考,具体如下: 1.JSON数组格式转换 JSON的数组格式就是为了前端快速的把JSON转换成数组的一种格式,json数组格式如下: 这就是一个标准的JSON数组格式,跟普通的JSON对比是在最后多了一个length属性。只要

  • 本文向大家介绍ES6中Math对象新增的方法实例详解,包括了ES6中Math对象新增的方法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6中Math对象新增的方法。分享给大家供大家参考,具体如下: Math.trunc() Math.trunc方法用于去除一个数的小数部分,返回整数部分。 对于没有部署这个方法的环境,可以用下面的代码模拟。 Math.sign() Math.s

  • 本文向大家介绍es6新增了哪些数据类型?相关面试题,主要包含被问及es6新增了哪些数据类型?时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍JavaScript数据结构与算法之栈详解,包括了JavaScript数据结构与算法之栈详解的使用技巧和注意事项,需要的朋友参考一下 在上一篇博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈。栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样操作很快,而且容易实现。 一:对

  • 本文向大家介绍ECMAScript6中Set/WeakSet详解,包括了ECMAScript6中Set/WeakSet详解的使用技巧和注意事项,需要的朋友参考一下 ES6里加入了一个新数据解构Set,和Java的Set一样,它里面不存放重复的元素。Set实现为一个类,使用时需要先new。 上面用Set的add方法添加元素,重复添加的,不会存进去。 Set构造器还可以接受数组作为参数传入 可以看到重

  • 本文向大家介绍数据结构之AVL树详解,包括了数据结构之AVL树详解的使用技巧和注意事项,需要的朋友参考一下 1. 概述 AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需