在站点上加载两次相同的脚本时,观察者是否会停止从第一个脚本观察?

时间:2017-06-09 23:18:44

标签: javascript observers

我在相当复杂的环境中有以下代码:

var cfg = { attributes: true, childList: true, characterData: true };

var observer = new MutationObserver(afunction);
observer.observe(e, cfg);

在实现我的新想法之前,我需要确保observer在我重新加载相同的脚本意味着覆盖observer时会自动停止观察。 它会在被覆盖的时候停止观察,还是只在垃圾收集器移除它时停止观察?

1 个答案:

答案 0 :(得分:0)

只有在GC删除它时才会停止。 Javascript对象和变量不保留代码创建它们的文件的任何内存,因此重新加载文件不会对先前加载期间创建的对象产生任何影响。

您可以进行明确的检查:

var observer;
if (observer) { // variable from a previous load of file
    observer.disconnect();
}
observer = new MutationObserver(afunction);