和Set的WeakSet类似Map也有WeakMap结构,WeakMap结构Map结构大致相同,也是用于生成键值对的集合,方法也存在get和set,形参中可以接受数组作为构造函数。
由示例中可以发现一个问题,WeakMap中的键值都是用的Object作为键,因为WeakMap直接收对象作为键名,下图中可见,不论用数字、字符串都不能作为键,这也是与Map的区别之一
区别二就是WeakMap的键名所指的对象不会被垃圾回收机制处理。其意就是当外部dom或者对象消失时,WeakMap的键依然可以正常使用。
语法却别一是没有遍历器,所以循环操作都没办法使用,例如keys、values等,也没有size属性,因为垃圾处理机制的问题所以键名也无法清空,取消了clear方法,所以WeakMap只有四个方法:get、set、has、delete
WeakMap经常用在dom节点中,假设我们将点击后更新状态放入WeakMap中,对应的饿键名就是当前dom,一旦这个dom节点被删除,这个状态就会自动消失,不存在内存泄漏问题,此外运用于监听事件也比较方便,当dom消失监听事件也随之消失
上一篇: 走进es6|新的键值对结构|Map结构