Map 与 WeakMap
Map
- key 范围不限于字符串,各种类型的值(包括对象)都可以当作键
- key 是强键
WeakMap
- key 只能是引用类型,值是任意类型
- key 是弱键
弱键(弱引用):该引用并不会变成对象和上下文链接的桥梁,在垃圾回收器运行清除标记的时候,并不会因为存在弱引用而去清除变量的标记。所以 Map 和 weakMap 在除了使用上的区别外,更主要的还 是在垃圾回收上面的区别。
当垃圾回收之后,weakMap 中的 key 由于没有被上下文引用,所以被回收了,换句话说就是 上文中的 wm 变量是没有和 weakMap 中的 key 建立引用关系。