WeakMap 是键必须为对象且不阻止垃圾回收的弱引用集合,用于避免内存泄漏、存储私有元数据;它无 size、不可遍历、不可清空,适用于对象生命周期即数据生命周期的场景。
WeakMap 是 Ja
vaScript 中一种特殊的键值对集合,它的核心特点是:键必须是对象,且对这个键的引用是“弱”的——也就是说,它不会阻止垃圾回收器回收该对象。
普通 Map 会对键保持强引用。如果一个 DOM 节点只被 Map 引用,即使它已从页面中移除,也仍驻留在内存里,造成泄漏。WeakMap 没这个问题:
它天然隔离数据,不暴露在对象自身上,也不参与遍历或序列化:
Object.keys() 或 for...in 访问getBoundingClientRect() 或样式推导,对象一销毁,缓存自动失效它故意不提供某些能力,来确保弱引用语义不被破坏:
.size 属性,无法知道存了多少条.keys()、.values()、.entries() 或 .forEach()
.clear() 方法,只能靠对象自然回收基本上就这些。它不是通用替代品,而是在“对象生命周期即数据生命周期”的场景下,最干净的解决方案。