“弱映射” WeakMap , 是一种新的集合类型
WeakMap 中的 weak
弱, 描述的是 JavaScript 垃圾回收程序对待 “弱映射” 中键的方式
- 增强了key / value 的存储机制
- WeakMap是Map 的兄弟类型, WeakMap 的API也是 Map 的子集。
- WeakMap 的创建
const wm = new WeakMap()
- WeakMap 的 key 值 只能是
Object
, 不适用 Object 报错- 只要有一个key 不是Object , 就会导致初始化错误
- 原始值可以包装成 原始值对象 再做键值
const key1 = new String("key1")
- WeakMap 和 Map 基本使用的API是一样的
- set
- get
- has
- delete
- size
WeakMap的注意点
弱键
垃圾回收
- WeakMap 不可迭代 ,因为key是弱键,随时都又有可能被销毁
- WeakMap 没有clear() 方法
- 为什么WeakMap 不使用原始值做key,而是使用引用之 Object
WeakMap 的特性
- 私有变量 (注意点)
- DOM节点元数据,获取节点绑定事件, 当页面的JS发生变化, 节点从DOM树中删除了,使用WeakMap 是, 在节点删除后,垃圾回收程序就可以立即释放其内存