ES6入门——WeakSet

标签: ES6 WeakSet
7人阅读 评论(0) 收藏 举报
分类:

来自阮一峰ECMAScript6入门学习笔记

含义

  • WeakSet 结构与Set类似,也是不重复的值的集合。但是WeakSet的成员只能是对象,而不能是其他类型的值。
  • WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占的内存,不考虑对象还存在与WeakSet之中。
  • WeakSet内部有多少成员取决于垃圾回收机制,可能遍历刚结束,成员就不见了,为了避免尴尬WeakSet不可遍历,也就没有sizeforEach属性。

语法

  • WeakSet可以接受一个数组或类似数组的对象作为参数。(任何具有Iterable接口的对象,都可以作为WeakSet的参数)。该数组的所有成员都会自动成为WeakSet实例对象的成员。
    const ws = new WeakSet();
    const a = [[1, 2], [3, 4]];
    const ws = new WeakSet(a);
    // WeakSet {[1, 2], [3, 4]},说明如果是数组,数组的成员必须是对象。
    const b = [3, 4];
    const ws = new WeakSet(b);
    // Uncaught TypeError: Invalid value used in weak set(…)
    //数组b的成员不是对象,加入WeakSet会报错。

WeakSet的三个方法

  • WeakSet.prototype.add(value):向 WeakSet 实例添加一个新成员。
  • WeakSet.prototype.delete(value):清除 WeakSet 实例的指定成员。
  • WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在 。
const ws = new WeakSet();
const obj = {};
const foo = {};

ws.add(window);
ws.add(obj);

ws.has(window); // true
ws.has(foo);    // false

ws.delete(window);
ws.has(window);    // false
查看评论

ES6中Set和WeakSet的使用

ES中提供了两新数据结构-Set和WeakSet。Set是类似于数组,但是成员变量的值都是唯一的,没有重复的值。WeakSet也是不重复的值的集合,但是只能用来存放对象。一、Set使用(1)Set本身...
  • u010046908
  • u010046908
  • 2016-03-10 11:00:53
  • 3236

ES6--set集合和WeakSet集合

数据结构Set类似于数组,但是成员的值都是唯一的,没有重复的值。var s = new Set();[2,3,5,4,5,2,2].map(x => s.add(x))for (i of s) {do...
  • qq_20261343
  • qq_20261343
  • 2016-01-14 11:03:44
  • 581

es6标准入门 学习简记(一)

第一章:es6简介 1.1ecmascript与JavaScript的关系:前者是后者的规格,后者是前者的实现。 ~1.6:es6到es5得一些转码方法 第二章:let 和 const ...
  • MrZZhou
  • MrZZhou
  • 2017-04-23 10:49:11
  • 757

js的内存泄漏以及es6的weakmap和weakset

什么是内存泄漏? 程序的运行需要内存。只要程序提出要求,操作系统或者运行时就必须供给内存。 对于持续进行的服务进程(daemon),必须及时释放内存,否则内存占用会越来越高,影响系统性能,直至进程...
  • m_review
  • m_review
  • 2018-03-20 23:47:09
  • 25

ES6之新的数据结构

ES6新的数据结构
  • kaelyn_X
  • kaelyn_X
  • 2017-11-06 23:17:45
  • 97

SE6新特性之集合Set、Map、WeakSet和WeakMap详解

SE5的时候我们经常用数组或者类数组对象来操作数据,而对于一些使用惯了java之类语言的集合的开发人员来说,总有少了点什么的感觉,SE6提供Set和Map这两个集合。不仅从根本上为一些问题提供了解决方...
  • qq_28506819
  • qq_28506819
  • 2017-04-30 23:27:04
  • 1121

es6 WeakSet

WeakSet 含义 WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。 首先,WeakSet 的成员只能是对象,而不能是其他类型的值。 ...
  • ixygj197875
  • ixygj197875
  • 2018-01-26 22:16:47
  • 33

ES6学习——集合(Collections):WeakMap

WeakMap的概念在Java中一样存在,和Map的主要区别在于垃圾收集的处理不同。这个数据结构在规范的23.3章节中进行了描述。 WeakMap只有key是可GC的,并不是value,这里的概念可...
  • kittyjie
  • kittyjie
  • 2016-01-14 16:01:18
  • 665

ES6 - Set和WeakSet数据结构

1.// Set,数据结构,去重 let setArr = new Set(['js','脚本','web','脚本']); setArr.add('前端职场'); setArr.add('js');...
  • zjsfdx
  • zjsfdx
  • 2018-02-05 20:58:59
  • 33

es6标准入门pdf

下载地址:网盘下载 ES6是下一代JavaScript语言标准的统称,每年6月发布一次修订版,迄今为止已经发布了3个版本,分别是ES2015、ES2016、ES2017。本书根据ES2017标准,详尽...
  • cf406061841
  • cf406061841
  • 2018-02-05 20:47:54
  • 220
    个人资料
    持之以恒
    等级:
    访问量: 7万+
    积分: 1590
    排名: 3万+