当观察到的节点被破坏时,MutationObserver是否被破坏?

Fuz*_*yma 4 javascript mutation-observers

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

new MutationObserver(callback)
  .observe(shape.node, {attributes: true})
Run Code Online (Sandbox Code Playgroud)

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

节点和观察者的内存是否已清理?还是他们保持生命?如果是这样:我如何防止这种情况发生?我不知道何时删除该节点。

Ofc我还可以观察父级,并在父级观察到“子列表已更改”时断开第一个观察者的连接,但我想避免这种情况

log*_*yth 5

MutationObserver对他们正在观察的节点的引用很弱,而对变异观察者的节点的引用很强。这意味着在您的情况下,唯一引用观察者的是节点对象。如果节点是GCed,则不会引用任何观察者,因此也将GC。