WeakSet对象允许存储对象弱引用的唯一值,WeakSet对象中的值同样不会重复,且只能保存对象的弱引用。...WeakSet持有的是对象的弱引用,这意味着在没有其他引用存在时垃圾回收能正确进行,WeakSet用于存储的对象引用只有在其没有被回收时才是有效的,正由于弱引用,WeakSet是不可枚举的。...WeakSet.prototype.add(value): 在该WeakSet对象中添加一个新元素value。...WeakSet.prototype.delete(value): 从该WeakSet对象中删除value这个元素。...WeakSet.prototype.has(value): 返回一个布尔值, 表示给定的值value是否存在于这个 WeakSet中.
ECMAScript 6 新增的“弱集合”(WeakSet)是一种新的集合类型,为这门语言带来了集合数据结构。WeakSet 是 Set 的“兄弟”类型,其 API 也是 Set 的子集。...创建WeakSet实例 可以使用 new 关键字实例化一个空的 WeakSet: const ws = new WeakSet(); 弱集合中的值只能是 Object 或者继承自 Object 的类型,...(); ws.add(val1).add(val2); ws.delete(val1); // true 弱值 WeakSet中的对象都是弱引用: WeakSet 中对对象的引用不会被考虑进垃圾回收机制...WeakSet 确实没有这个方法。因为不可能迭代,所以也不可能在不知道对象引用的情况下从弱集合中取得值。即便代码可以访问 WeakSet 实例,也没办法看到其中的内容。...WeakSet 没有size属性。
当前内存使用情况:1.94MB, // 当前Map的长度: 0 附录 使用 node 命令执行js的时候加入 –expose-gc参数的作用 --expose-gc 参数表示允许手动执行垃圾回收机制 相关链接 WeakSet
(箭头函数获取不到this,你懂的) WeakSet WeakSet 只能存储对象引用,不能存放值,而set对象可以,不可遍历 weakSet对象存储对象是弱引用的,对象会被垃圾回收机制回收掉 操作方法
介绍 WeakMap与WeakSet都是一种优化使用内存的解决方案。这两个数据结构的引用不会导致这些对象不被回收。上来就说这些有点太枯燥了,还是先聊聊它们能干什么。...WeakSet 集合就是一堆互异的数据,想必这个读者都早就明白了,这里不多说。 相对于正统Set,WeakSet只提供三个方法:add、delete和has。...说了这么多,还是来点代码: const set = new WeakSet() let mike = { name: 'Mike', age: 17 } let john = { name: 'John...set.add(1) // TypeError: Invalid value used in weak set WeakMap 上文提到的WeakSet,我是不知道它到底被广泛应用到哪里了。...顺带一提,同WeakSet一样,WeakMap的键必须是对象: barStorage.set(1, 2) // TypeError: Invalid value used as weak map key
Set也是使用for-of进行迭代四、WeakSet与Set基本上和WeakMap一致,但WeakSet没有get方法图片
引言--Set、Map、WeakSet和WeakMap是ES6引入的新的数据结构,它们在处理数据时具有不同的特性和用途。...WeakSet中存储的对象是弱引用关联的,即如果没有其他引用指向该对象,则该对象会被垃圾回收。WeakSet没有迭代器,不能遍历其中的元素。...使用场景存储临时数据:可以使用WeakSet来存储临时数据,不用担心内存泄漏的问题。...// 存储临时数据let obj1 = { name: 'John' };let obj2 = { name: 'Jane' };const weakSet = new WeakSet([obj1, obj2...而在WeakSet和WeakMap中,存储的对象是弱引用关联的。这意味着如果一个对象只有在WeakSet或WeakMap中存在引用,并且没有其他地方引用它,那么该对象将被垃圾回收机制自动回收。
今天我们来介绍一下数据结构Set和weakset set weakset 简单介绍 Set其实类似于数组,但是其中的成员值都是唯一的,没有重复的值。 如何构造一个Set?...1,1,3,4,5,5,6,8]) let c=new Set([...b].map(x=>x*2)) console.log(c) // Set(6) { 2, 6, 8, 10, 12, 16 } WeakSet...的使用其实和Set比较类似,他们的区别主要有两个: WeakSet的成员只能是对象,而不是能是别的类型的值 WeakSet的对象都是弱引用,不能遍历 什么叫弱引用呢,就是如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存...,不考虑该对象还存在于 WeakSet 之中。...WeakSet有三个方法: add(value) 增加某个值 delete(value) 删除某个值 has(value) 判断某个值是否存在 因为WeakSet不可遍历,WeakSet没有size属性
首先让我们了解下WeakSet与Set的不同,以下三点是WeakSet与Set不一样的地方: Set可以存储值类型和对象引用类型,而WeakSet只能存储对象引用类型,否则会抛出TypeError。...WeakSet不能包含无引用的对象,否则会被自动清除出集合(垃圾回收机制)。 WeakSet对象是不可枚举的,也就是说无法获取大小,也无法获取其中包含的元素。...如下段的代码验证了上述特性: let weakset = new WeakSet(); (function(){ let a = {}; weakset.add(1); //TypeError...thrown weakset.clear(); //Exception, no such function const weakset=new WeakSet(); let foo={bar:1};...weakset.add(foo); console.log(weakset.has(foo)); //output true foo=null; console.log(weakset.has(foo)
高阶指南之 WeakSet 「WeakSet」 对象允许你将弱保持对象存储在一个集合中。 属性 WeakSet.length length 属性的值为 0....WeakSet.prototype 表示 WeakSet 构造函数的原型,允许向所有 WeakSet 对象添加属性。...WeakSet.prototype.constructor 返回构造器 WeakSet 本身。...方法 WeakSet.prototype.add(value) 在该 WeakSet 对象中添加一个新元素 value....如果没有其他的对WeakSet中对象的引用,那么这些对象会被当成垃圾回收掉。这也意味着WeakSet中没有存储当前对象的列表。正因为这样,WeakSet 是不可枚举的。
WeakSet WeakSet 对象允许你将弱引用对象储存在一个集合中 WeakSet 与 Set 的区别: WeakSet 只能储存对象引用,不能存放值,而 Set 对象都可以 WeakSet 对象中储存的对象值都是被弱引用的...,即垃圾回收机制不考虑 WeakSet 对该对象的应用,如果没有其他的变量或属性引用这个对象值,则这个对象将会被垃圾回收掉(不考虑该对象还存在于 WeakSet 中),所以,WeakSet 对象里有多少个成员元素...,取决于垃圾回收机制有没有运行,运行前后成员个数可能不一致,遍历结束之后,有的成员可能取不到了(被垃圾回收了),WeakSet 对象是无法被遍历的(ES6 规定 WeakSet 不可遍历),也没有办法拿到它包含的所有元素...属性: constructor:构造函数,任何一个具有 Iterable 接口的对象,都可以作参数 const arr = [[1, 2], [3, 4]] const weakset = new WeakSet...(arr) console.log(weakset) 方法: add(value):在WeakSet 对象中添加一个元素value has(value):判断 WeakSet 对象中是否包含value
考核内容:Set和WeakSet的不同点 题发散度: ★★ 试题难度: ★ 解题思路: WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。...首先,WeakSet 的成员只能是对象,而不能是其他类型的值。...: invalid value used in weak set 上面代码试图向 WeakSet 添加一个数值和Symbol值,结果报错,因为 WeakSet 只能放置对象。...WeakSet 的成员是不适合引用的,因为它会随时消失。...另外,由于 WeakSet 内部有多少个成员,取决于垃圾回收机制有没有运行,运行前后很可能成员个数是不一样的,而垃圾回收机制何时运行是不可预测的, 因此 ES6 规定 WeakSet 不可遍历 参考代码
WeakSet 含义 WeakSet 结构与 Set 类似,也是不重复的值的集合。 但是,它与 Set 有两个区别。 首先,WeakSet 的成员只能是对象,而不能是其他类型的值。...WeakSet 之中。...语法:WeakSet 是一个构造函数,可以使用new命令,创建 WeakSet 数据结构。...WeakSet 结构有以下三个方法。 WeakSet.prototype.add(value):向 WeakSet 实例添加一个新成员。...WeakSet.prototype.delete(value):清除 WeakSet 实例的指定成员。
什么是WeakSet WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。 1.WeakSet 的成员只能是对象,而不能是其他类型的值。...let weakSet = new WeakSet(); weakSet.add({a:'first',b:'one'});//WeakSet {{a:'first',b:'one'}} weakSet.add...let arr = [[1, 2], [3, 4]]; let weakSet = new WeakSet(arr); console.log(weakSet);//WeakSet {[1, 2], [...3, 4]} let weakSet = new WeakSet([[1, 2], [3, 4]]); console.log(weakSet);//WeakSet {[1, 2], [3, 4]}...value used in weak set let weakSet = new WeakSet(); weakSet.add({a:'first',b:'one'});//WeakSet {{a
首先,WeakSet 的成员只能是对象,而不能是其他类型的值。...其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于...WeakSet 之中。...因此WeakSet 适合临时存放一组对象,以及存放跟对象绑定的信息。只要这些对象在外部消失,它在 WeakSet 里面的引用就会自动消失。 ES6 规定 WeakSet 不可遍历。...总结:在实际开发中Set用的比较多,WeakSet用的并不多,但是WeakSet对传入值必须是对象作了很好的判断。
Node.js教学 从头开始学习 ajax学习 目录 set类型与array和object的区别 set元素检测与管理 类型转换的重要性 遍历set类型的方式 使用set处理网站关键字 并集交集差集 WeakSet...b.has(item)) )); WeakSet语法介绍 //跟set的区别是 WeakSet值需要是引用类型 let set = new WeakSet()...//添加内容 set.add(['xiaoixe', 'xiaoxietongzhi']) //添加dom元素 let nodes = new WeakSet...() //给WeakSet添加内容,WeakSet是弱引用,对象实际上是被 hd obj引用了两次。...适用于临时存放一组对象,以及存放和对象绑定的信息,只要这些对象在外部消失,那么它在 weakset 里面的引用也会自动消失,类似单向绑定。
b.has(x))); difference // Set(2) {1, 2} 二、WeakSet 1、WeakSet 的基本用法 WeakSet 是一个构造函数,可以使用 new 命令,创建 WeakSet...数据结构 var ws = new WeakSet(); ws // WeakSet {} 作为构造函数,WeakSet 可以接受一个数组或类数组的对象作为参数,该数组的所有成员,都会自动成为 WeakSet...,a 是一个数组,它有两个成员,也都是数组 将 a 作为 WeakSet 构造函数的参数,a 的成员会自动成为 WeakSet 的成员 2、WeakSet 与 Set 的区别 WeakSet 结构与...,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中 这个特点意味着,无法引用 WeakSet 的成员,因此 WeakSet 是不可遍历的 3、WeakSet 实例的操作方法...); ws.add(obj); ws // WeakSet {{…}, Window} 输出结果详情: ② WeakSet.prototype.delete(value) 清除 WeakSet
类似,也是不重复的值的集合 WeakSet 的成员只能是对象,而不能是其他类型的值 WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象...,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中 WeakSet 是一个构造函数,可以使用new命令,创建 WeakSet 数据结构 WeakSet.prototype.add...(value):向 WeakSet 实例添加一个新成员。...WeakSet.prototype.delete(value):清除 WeakSet 实例的指定成员。...WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在 WeakSet 实例之中。
垃圾回收机制与WeakSet (1)垃圾回收机制只考虑对象的强引用 (2)垃圾回收机制依赖「引用计数」,当计数为0,则GC自动回收该对象占用的内存。...WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于WeakSet...WeakSet里面的引用,都不计入垃圾回收机制,所以就不存在这个问题。因此,WeakSet适合临时存放一组对象,以及存放跟对象绑定的信息。...只要这些对象在外部消失,它在WeakSet里面的引用就会自动消失。 由于上面这个特点,WeakSet的成员是不适合引用的,因为它会随时消失。...另外,由于WeakSet内部有多少个成员,取决于垃圾回收机制有没有运行,运行前后很可能成员个数是不一样的,而垃圾回收机制何时运行是不可预测的,因此ES6规定WeakSet不可遍历。
领取专属 10元无门槛券
手把手带您无忧上云