当被观察节点被销毁时,MutationObserver 是否被销毁?

Is a MutationObserver destroyed when the observed node is destroyed?

我通过简单地观察一个节点

new MutationObserver(callback)
  .observe(shape.node, {attributes: true})

如您所见,我没有任何对观察者的引用。观察到的节点将在某个时候被销毁。

是否清理了节点和观察者的内存?还是他们让自己活着?如果是这样:我怎样才能防止这种情况发生?不知道节点什么时候被移除。

Ofc 我也可以观察 parent 并在 parent 观察到 "child list changed" 时断开第一个观察者,但我想避免

MutationObservers持有对它们正在观察的节点的弱引用,而节点对变异观察者有强引用。这意味着在您的情况下,唯一引用观察者的是节点对象。如果节点被 GCed,没有任何东西会引用观察者,所以它也会被 GCed。