在网站上两次加载相同的脚本时,观察者是否会从第一个脚本开始停止观察?
When loading the same script twice on a site, do observers stop observing from the first script?
我在一个相当复杂的环境中有以下这段代码:
var cfg = { attributes: true, childList: true, characterData: true };
var observer = new MutationObserver(afunction);
observer.observe(e, cfg);
在实施我的新想法之前,我需要确定 observer
是否会在我重新加载相同的脚本意味着覆盖 observer
时自动停止观察。
是从被覆盖时就停止观察,还是垃圾回收器移除后才停止观察?
只有在GC移除的时候才会停止。 Javascript 对象和变量不保留其代码创建它们的文件的任何内存,因此重新加载文件对上一次加载期间创建的对象没有任何影响。
您可以进行显式检查:
var observer;
if (observer) { // variable from a previous load of file
observer.disconnect();
}
observer = new MutationObserver(afunction);
我在一个相当复杂的环境中有以下这段代码:
var cfg = { attributes: true, childList: true, characterData: true };
var observer = new MutationObserver(afunction);
observer.observe(e, cfg);
在实施我的新想法之前,我需要确定 observer
是否会在我重新加载相同的脚本意味着覆盖 observer
时自动停止观察。
是从被覆盖时就停止观察,还是垃圾回收器移除后才停止观察?
只有在GC移除的时候才会停止。 Javascript 对象和变量不保留其代码创建它们的文件的任何内存,因此重新加载文件对上一次加载期间创建的对象没有任何影响。
您可以进行显式检查:
var observer;
if (observer) { // variable from a previous load of file
observer.disconnect();
}
observer = new MutationObserver(afunction);