WeakSet 能不能用来缓存 DOM 元素避免内存泄漏?
我最近在做一个动态表单,需要临时标记某些 input 元素是否已校验过。听说 WeakSet 不会阻止垃圾回收,就试着用它存 DOM 节点,但不确定是不是真的能防内存泄漏。比如下面这段样式:
.validated {
border: 2px solid green;
}
.pending {
border: 1px dashed gray;
}
我用 const validatedInputs = new WeakSet(); 存节点,但发现即使元素被移除了,WeakSet 里的引用好像还在?还是说我理解错了它的使用场景?
Top丶红毅
Lv1
问题在于 WeakSet 确实不会阻止垃圾回收,但如果你的 DOM 元素仍然被其他引用持有,它们不会被回收。你需要确保 DOM 元素没有其他强引用。
点赞
2026-03-23 09:01