首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

set、map、WeakSet和WeakMap

set set是类似于数组集合的数据结构,成员唯一且无序 操作方法 add('xx'):添加,返回添加后的值 delect('xx'):删除,返回boolean has('xx'):判断是否存在某个值...(箭头函数获取不到this,你懂的) map map对象保存键值对,任何值都可以作为一个键或一个值 操作方法 set(key,value):添加元素 get(key):通过key获取value...(箭头函数获取不到this,你懂的) WeakSet WeakSet 只能存储对象引用,不能存放值,而set对象可以,不可遍历 weakSet对象存储对象是弱引用的,对象会被垃圾回收机制回收掉 操作方法...weakMap对象是一组键值对的集合,其中键是弱引用,所以键不可以为基本数据类型,必需是引用类型,值可以为任意值 操作方法 has(key):是否存在某个键 get(key):通过key值获取value set

20610
您找到你想要的搜索结果了吗?
是的
没有找到

Set、Map、WeakSet、WeakMap详细介绍

引言--Set、Map、WeakSet和WeakMap是ES6引入的新的数据结构,它们在处理数据时具有不同的特性和用途。...WeakSet中存储的对象是弱引用关联的,即如果没有其他引用指向该对象,则该对象会被垃圾回收。WeakSet没有迭代器,不能遍历其中的元素。...、Map、WeakSet和WeakMap的用法和特性。...而在WeakSet和WeakMap中,存储的对象是弱引用关联的。这意味着如果一个对象只有在WeakSet或WeakMap中存在引用,并且没有其他地方引用它,那么该对象将被垃圾回收机制自动回收。...另外,由于弱引用关联的特性,WeakSet和WeakMap没有提供像Set和Map那样的迭代器方法来遍历元素。也没有size属性来获取元素个数。这是为了确保不会干扰垃圾回收机制对对象的处理。

13430

javascript之setweakset的用法

今天我们来介绍一下数据结构Setweakset set weakset 简单介绍 Set其实类似于数组,但是其中的成员值都是唯一的,没有重复的值。 如何构造一个Set?...Set实例的操作方法 Set有四个主要的操作方法:add()、delete()、has()、clear() add(value)为Set添加某个值,返回set本身 delete(value)删除Set中的某个值..., 12, 16 } WeakSet的使用其实和Set比较类似,他们的区别主要有两个: WeakSet的成员只能是对象,而不是能是别的类型的值 WeakSet的对象都是弱引用,不能遍历 什么叫弱引用呢...,就是如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。...WeakSet有三个方法: add(value) 增加某个值 delete(value) 删除某个值 has(value) 判断某个值是否存在 因为WeakSet不可遍历,WeakSet没有size属性

55920

【ES6基础】SetWeakSet

但是在一些业务场景中,我们并不需要集合维护一个有序的状态,甚至有些场景需要无序集合,因此ES6里加入了无序集合Set和其的Weak版本WeakSet。...这篇文章笔者将从以下几方面进行介绍: Set代码示例 Set和Array的区别 Set常用方法 WeakSet介绍 本篇文章阅读时间预计5分钟 01 Set代码示例 Set需要使用新语法new Set(...首先让我们了解下WeakSetSet的不同,以下三点是WeakSetSet不一样的地方: Set可以存储值类型和对象引用类型,而WeakSet只能存储对象引用类型,否则会抛出TypeError。...: Invalid value used in weak set weakset.add(a); })(); //here 'a' is garbage collected from weakset...如果不涉及排序需要去重的业务场景,我们可以尝试使用set,如果你想优化程序内存的使用,你可以尝试使用WeakSet

31020

【ES6基础】SetWeakSet

但是在一些业务场景中,我们并不需要集合维护一个有序的状态,甚至有些场景需要无序集合,因此ES6里加入了无序集合Set和其的Weak版本WeakSet。...这篇文章笔者将从以下几方面进行介绍: Set代码示例 Set和Array的区别 Set常用方法 WeakSet介绍 本篇文章阅读时间预计5分钟 Set代码示例 Set需要使用新语法new Set()声明...首先让我们了解下WeakSetSet的不同,以下三点是WeakSetSet不一样的地方: Set可以存储值类型和对象引用类型,而WeakSet只能存储对象引用类型,否则会抛出TypeError。...: Invalid value used in weak set weakset.add(a); })(); //here 'a' is garbage collected from weakset...如果不涉及排序去重的场景,我们可以尝试使用set,如果你想优化程序内容的使用,你可以尝试使用WeakSet

51730

介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

WeakSet WeakSet 对象允许你将弱引用对象储存在一个集合中 WeakSetSet 的区别: 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

1.6K20

深入理解 ES6 新增的数据结构 SetWeakSet

b.has(x))); difference // Set(2) {1, 2} 二、WeakSet 1、WeakSet 的基本用法 WeakSet 是一个构造函数,可以使用 new 命令,创建 WeakSet...,a 是一个数组,它有两个成员,也都是数组 将 a 作为 WeakSet 构造函数的参数,a 的成员会自动成为 WeakSet 的成员 2、WeakSetSet 的区别 WeakSet 结构与...Set 类似,也是不重复的值的集合 但它与 Set 有两个区别: ① WeakSet 的成员只能是对象,而不能是其他类型的值 var ws = new WeakSet(); ws.add(1) /...set 上面代码试图向 WeakSet 添加一个数值和 Symbol 值,结果报错,因为 WeakSet 只能放置对象 ② WeakSet 中的对象都是弱引用 即垃圾回收机制不考虑 WeakSet 对该对象的引用...是不可遍历的 3、WeakSet 实例的操作方法 ① WeakSet.prototype.add(value) 向 WeakSet 实例添加一个新成员 var ws = new WeakSet();

35820

js WeakSet的基本使用

ECMAScript 6 新增的“弱集合”(WeakSet)是一种新的集合类型,为这门语言带来了集合数据结构。WeakSetSet 的“兄弟”类型,其 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属性。

68520

JS中的WeakMap与WeakSet

介绍 WeakMap与WeakSet都是一种优化使用内存的解决方案。这两个数据结构的引用不会导致这些对象不被回收。上来就说这些有点太枯燥了,还是先聊聊它们能干什么。...WeakSet 集合就是一堆互异的数据,想必这个读者都早就明白了,这里不多说。 相对于正统SetWeakSet只提供三个方法: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

35320

一文搞清楚ES6新增数据结构 Symbol Map WeakMap Set WeakSet

在ES6中新增了另外两种数据结构:Set、Map,以及它们的另外形式WeakSet、WeakMap。 Set是一个新增的数据结构,可以用来保存数据,类似于数组,但是和数组的区别是元素不能重复。...WeakSet的基本使用 和Set类似的另外一个数据结构称之为WeakSet,也是内部元素不能重复的数据结构。...const weakSet = new WeakSet() // 1.区别一: 只能存放对象类型 // TypeError: Invalid value used in weak set // weakSet.add...= new Set() // 建立的是强引用 set.add(obj) // 建立的是弱引用 weakSet.add(obj) WeakSet常见方法 add(value):添加某个元素,返回WeakSet...WeakSet的应用 注意:WeakSet不能遍历 因为WeakSet只是对对象的弱引用,如果我们遍历获取到其中的元素,那么有可能造成对象不能正常的销毁。

27710

Vue 3 高阶指南之 WeakSet

WeakSet.prototype 表示 WeakSet 构造函数的原型,允许向所有 WeakSet 对象添加属性。...在WeakSet的集合中是唯一的 它和 Set 对象的区别有两点: 与Set相比,WeakSet 只能是「对象的集合」,而不能是任何类型的任意值。 WeakSet持弱引用:集合中对象的引用为弱引用。...(foo); // true ws.has(bar); // true ws.delete(foo); // 从set中删除 foo 对象 ws.has(foo); // false,...***因此,它们都可以被加入到set中。 检测循环引用 递归调用自身的函数需要一种通过跟踪哪些对象已被处理,来应对循环数据结构的方法。...对象的数量或它们的遍历顺序无关紧要,因此,WeakSetSet更适合(和执行)跟踪对象引用,尤其是在涉及大量对象时。

60120
领券