Mickey's Blog ·

ES6 weakmap

首先说weakmap的特性,weak弱,这里的弱指的是引用关系,我们先看常用的map

image.png

这里的map是强引用,即使key作为对象被删除了,由于map的引用,垃圾回收机制依然会保留key的内容

但是到了weakmap这里不一样了

image.png

当你使用weakmap的时候,如果引用的对象被删除,对应的weakmap键也就不存在了。

所以 WeakMap 可以帮你省掉手动删除对象关联数据的步骤,所以当你不能或者不想控制关联数据的生命周期时就可以考虑使用 WeakMap。

下面有几个weakmap的应用场景

image.png

image.png

image.png

总结一下weakmap提供了我们一种弱引用的关联关系,可以在一些场景提供便捷的内存或数据管理,但是相比于我们平时常用的map,缺少了遍历,count等操作。在特定的场景可以减少开发量,同时也能更高效的管理内存。