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


Posted in Javascript onAugust 07, 2017

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的用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ExtJS的FieldSet的column列布局
Nov 20 Javascript
解决Extjs上传图片无法预览的解决方法
Mar 22 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
Sep 29 Javascript
jQuery将多条数据插入模态框的示例代码
Sep 25 Javascript
jQuery获取上传文件的名称的正则表达式
May 21 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
jQuery获取table行数并输出单元格内容的实现方法
Jun 30 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
Sep 10 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
bootstrap Table插件使用demo
Aug 07 #Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 #Javascript
React进阶学习之组件的解耦之道
Aug 07 #Javascript
详解前端路由实现与react-router使用姿势
Aug 07 #Javascript
React中使用collections时key的重要性详解
Aug 07 #Javascript
react路由配置方式详解
Aug 07 #Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 #Javascript
You might like
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
js格式化时间小结
2014/11/03 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
mocha的时序规则讲解
2019/02/16 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
Python中列表与元组的乘法操作示例
2018/02/10 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
python梯度下降算法的实现
2020/02/24 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
优秀教师先进事迹
2014/01/22 职场文书
就业协议书
2014/09/12 职场文书
关于工作经历的证明书
2014/10/11 职场文书
个人自荐书怎么写
2015/03/26 职场文书
科技活动总结范文
2015/05/11 职场文书
PL350与SW11的比较
2021/04/22 无线电