在这里找到一个几乎相同的问题:Should an IntersectionObserver be disconnected when element is removed
我还没有找到说明从DOM中删除带有附加MutationObserver
(MO)的元素时应该怎么做的文档。 API不提供像removeEventListener
这样的remove方法,而只是一个仅涉及子节点的临时disconnect
方法。垃圾收集最终会出现,但似乎在SPA webapp中会变得凌乱//肿。我可以使用delete
关键字来删除保存MO的变量,但是我已经读过有关这样做的警告(不一定是MO),而不是让垃圾回收来处理它。
因此,我正在寻找官方信息,例如“当删除关联的DOM元素时删除了MO,”或“当不再使用分配的变量时会自动对MO进行垃圾收集”或“应从以下位置删除MO:他们的父对象(如果不再被使用)”等。
答案 0 :(得分:2)
随着我对该主题的研究越来越深入,看来我找到了答案。
在垃圾回收看来,MO与DOM元素紧密耦合,而其后代则松散耦合。因此,似乎您可以随时删除DOM元素,而垃圾回收应该可以处理其余部分。
官方回答https://dom.spec.whatwg.org/#garbage-collection:
4.3.4。垃圾收集
节点在其注册观察者列表中强烈引用了注册观察者。
节点的注册观察者列表中的注册观察者对该节点的引用微弱。