bit*_*ess 6 javascript mutation-observers
在这里发现了一个几乎相同的问题:Should an IntersectionObserver is disconnected when element is removed
我还没有找到说明MutationObserver从 DOM 中删除带有附加(MO)的元素时应该做什么的文档。API 不提供像 那样的 remove 方法removeEventListener,只是一个disconnect只涉及子节点的临时方法。垃圾收集最终会出现,但似乎在 SPA 网络应用程序中可能会变得混乱/臃肿。我可以使用delete关键字来删除保存 MO 的变量,但我已经阅读了这样做的警告(不一定适用于 MO),而不是让垃圾收集处理它。
因此,我正在寻找官方信息,例如“删除关联的 DOM 元素时删除 MO”,或“不再使用分配的变量时,MO 会自动垃圾回收”,或“MO 应从其父对象中删除”如果它们不再被使用,“等等。
当我更多地研究这个话题时,我似乎找到了答案。
在垃圾回收的眼中,MO 与 DOM 元素紧密耦合,而它们的后代是松散耦合的。因此,您似乎可以随时删除 DOM 元素,而垃圾收集应该处理其余部分。
官方回答https://dom.spec.whatwg.org/#garbage-collection:
4.3.4. 垃圾收集
节点在其注册观察者列表中对注册观察者有很强的引用。
节点的注册观察者列表中的注册观察者对该节点具有弱引用。
| 归档时间: |
|
| 查看次数: |
1180 次 |
| 最近记录: |