Set,WeakSet,Map,WeakMap介绍

Set基本使用(es6)

 

Set的常见方法

set中不可有重复元素,加了重复的也只会显示其中一个

通过set将数组取出重复元素,并转回数组

也可以通过展开运算符将其转回普通数组

获取个数

添加和删除,传入的都是元素

查找元素,返回布尔值,删除该内容

遍历set,可以使用forEach,for of

WeakSet使用

弱引用就是GC垃圾回收机制,不回去参考的引用

如果是将obj放入set中,然后,obj不再指向原本指向的那块地址,那么原来那块地址内容也不会被回收,因为set是强引用。但是如果是Weakset就不一样了,他为弱引用,那么在obj不再指向原本指向的那块地址,原来那块地址内容会被回收。

WeakSet的应用

限制对象person只能通过构造函数创建出来的对象调用runing方法,其他就不行了,那么就在运行run方法时判断创建当前这个对象是否存在weakset中有了,没有就直接抛出异常。

当以这种形式写key,其实并不是真的用对象在做key,而是会将对象转为字符串[oject object],两个都是同一个名字,所以后面的会覆盖前面的,以至于最终打印出来,只有一个数据,值为bbb

Map的基本使用

Map也是来存键值对的,map可以让对象或其他的做可以key

Map的常用方法

常用方法,增加键值对,获取key对应都值,查询是否有对应的值,删除对应的键值对

清除和遍历

WeakMap的使用

WeakMap是弱引用,并且,不被被遍历,所以直接打印WeakMap类型的数据就会显示这样的内容,不能遍历代表无forEach

WeakMap的应用

要实现改变obj中的name或age时,函数objNameFn1和objAgeFn1也随之被执行

那么就需要创建Map对象,将属性name和age作为key传入,与name和age相关的所有函数作为value传入。然后创建weakMap,将对象obj1作为key,之前创建得map对象作为value,如果我们需要更改obj1中的name,那么就可以通过weakMap对象的get方法拿到obj1对应的map,然后从map中通过get拿到name对应的所以函数,最终通过遍历,获得所需要的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值