如何通过WeakMap实现DOM节点私有状态绑定,自动回收内存?

2026-04-27 17:030阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计954个文字,预计阅读时间需要4分钟。

如何通过WeakMap实现DOM节点私有状态绑定,自动回收内存?

由于WeakMap的键是弱引用,当DOM节点被移除且没有其他强引用时,整个键值对会自动从WeakMap中消失,无需手动清理。这与Map不同:

典型误用场景:用 Map + node.idnode.dataset.id 当 key,结果节点删了状态还留着,内存持续增长。

关键前提:WeakMap 的 key 必须是对象(DOM 节点符合),value 可以是任意类型;但不能用字符串、数字或 null 当 key,否则会直接报错 TypeError: Invalid value used as weak map key

阅读全文

本文共计954个文字,预计阅读时间需要4分钟。

如何通过WeakMap实现DOM节点私有状态绑定,自动回收内存?

由于WeakMap的键是弱引用,当DOM节点被移除且没有其他强引用时,整个键值对会自动从WeakMap中消失,无需手动清理。这与Map不同:

典型误用场景:用 Map + node.idnode.dataset.id 当 key,结果节点删了状态还留着,内存持续增长。

关键前提:WeakMap 的 key 必须是对象(DOM 节点符合),value 可以是任意类型;但不能用字符串、数字或 null 当 key,否则会直接报错 TypeError: Invalid value used as weak map key

阅读全文