“弱映射” 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 是, 在节点删除后,垃圾回收程序就可以立即释放其内存