扫码关注公众号

js语言和框架之Set\Map\WeakMap\WeakSet
10-27
276观看
01

简述Map 的特点

1、Map默认情况下不包含任何键,所有键都是自己添加进去的。不同于Object原型链上有一些默认的键。2、Map的键可以是任意类型数据,就连函数都可以。3、Map的键值对个数可以轻易通过size属性获取,Object需要手动计算。4、Map在频繁增删键值对的场景下性能要比Object好。

来自:ES和TS-Set\Map\WeakMap\WeakSet
02

什么时候用 Map

1、要添加的键值名和Object上的默认键值名冲突,又不想改名时,用Map2、需要String和Symbol以外的数据类型做键值时,用Map3、键值对很多,有需要计算数量时,用Map4、需要频繁增删键值对时,用Map

来自:ES和TS-Set\Map\WeakMap\WeakSet
03

Map 和 WeakMap 的区别

Map的键可以是任意类型,WeakMap只接受对象作为键(null除外),不接受其他类型的值作为键;Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键;WeakMap的键是弱引用,键所指向的对象可以被垃圾回收,此时键是无效的;Map可以被遍历,WeakMap不能被遍历。 

来自:ES和TS-Set\Map\WeakMap\WeakSet
04

weakset和set的异同点

相同点:weakSet和set结构类似,都是不重复的值的集合不同点:1)weakSet的成员只能是对象2)weakSet中的对象都是弱引用注:set是强引用,weakSet是弱引用

来自:ES和TS-Set\Map\WeakMap\WeakSet
05

简述WeakSet方法与垃圾回收

WeakSet只支持add,has和delete方法·WeakSet.add(value):向WeakSet实例添加一个新元素·WeakSet.delete(value):清除WeakSet实例的指定元素·WeakSet.has(value):返回一个布尔值,表示某个值是否在//WeakSetaddhasdelete方法constweakset=newWeakSet();constarr=["hdcms"];//添加操作weakset.add(arr);console.log(weakset.has(arr));//true//删除操作weakset.delete(arr);//检索判断console.log(weakset.has(arr));//falseWeakSet中的对象都是弱引用,如果其他对象都不再引用WeakSet集合中的对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于WeakSet之中通过定时器来查看,当WeakSet里的对象无引用时,则会被浏览器垃圾回收constweakset=newWeakSet([['jsx']]);console.log(weakset);setTimeout(()=>{console.log(weakset);//WeakSet{}},100);

来自:ES和TS-Set\Map\WeakMap\WeakSet
课程
专栏
【校招VIP】js中的set与map
csdn
set
map
【校招VIP】JavaScript之WeakMap
csdn
WeakMap
【校招VIP】ES6中的Set和WeakSet
csdn
set
WeakSet
js语言和框架-ES和TS-Set\Map\WeakMap\WeakSet
3专栏
1课程
5 试题