跳到主要内容

Map 与 WeakMap

Map

  1. key 范围不限于字符串,各种类型的值(包括对象)都可以当作键
  2. key 是强键

WeakMap

  1. key 只能是引用类型,值是任意类型
  2. key 是弱键

弱键(弱引用):该引用并不会变成对象和上下文链接的桥梁,在垃圾回收器运行清除标记的时候,并不会因为存在弱引用而去清除变量的标记。所以 Map 和 weakMap 在除了使用上的区别外,更主要的还是在垃圾回收上面的区别。

当垃圾回收之后,weakMap 中的 key 由于没有被上下文引用,所以被回收了,换句话说就是 上文中的 wm 变量是没有和 weakMap 中的 key 建立引用关系。