Разрушается ли MutationObserver при уничтожении наблюдаемого узла? - PullRequest
0 голосов
/ 12 июня 2018

Я наблюдаю узел, просто делая

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

Как вы можете видеть, у меня нет никаких ссылок на наблюдателя.Наблюдаемый узел будет разрушен в какой-то момент.

Очистена ли память для узла и для наблюдателя?Или они живут сами по себе?И если так: как я могу предотвратить это?Я не знаю, когда узел будет удален.

Ofc. Я мог бы также наблюдать за родителем и отключить первого наблюдателя, когда у родителя наблюдается «измененный список детей», но я хотел бы избежать этого

1 Ответ

0 голосов
/ 12 июня 2018

MutationObserver имеют слабую ссылку на узлы, которые они наблюдают, а узлы имеют сильную ссылку на наблюдателя мутации.Это означает, что в вашем случае единственное, что ссылается на наблюдателя, это объект узла.Если узел GCed, ничто не будет ссылаться на наблюдателя, поэтому он также будет GCed.

...