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对应的所以函数,最终通过遍历,获得所需要的方法