我知道。可以将 JavaScript 和样式表文件动态加载到文档的标题中。另一方面,可以从文档的标题中删除脚本和样式表标签。然而,加载的 JavaScript 仍然存在于内存中。
是否可以从网络浏览器内存中销毁加载的 JavaScript?我认为。它应该类似于下面的伪代码。
// Scan all variables in loaded JavaScript file.
var loadedVariable = getLoadedVariable(JavaScriptFile);
for(var variable in loadedVariable)
{
variable = null;
}
// Do same thing with function.
是否可以创建一些 JavaScript 来执行此操作?
谢谢,
附言。现在,您可以使用 xLazyLoader和用于动态加载内容的 jQuery。
最佳答案
如果将加载的脚本分配给 window
属性,例如使用如下模块模式:
window.NiftyThing = (function() {
function doSomething() { ... }
return {
doSomething: doSomething
};
})();
或
window.NiftyThing = {
doSomething: function() { ... }
};
或
NiftyThing = {
doSomething: function() { ... }
};
然后你可以删除引用它的属性:
delete window.NiftyThing;
...这至少删除了对它的一个主要引用;如果有其他对它的引用,它可能不会被清理。
如果使用了var
关键字:
var NiftyThing = {
doSomething: function() { ... }
};
...那么它不是属性,您不能使用 delete
,因此设置为 undefined
或 null
将破坏引用:
NiftyThing = undefined;
您可以对冲您的赌注:
NiftyThing = undefined;
try { delete NiftyThing; } catch (e) { }
在所有情况下,由 JavaScript 实现来确定没有未完成的对加载脚本的外部引用并进行清理,但至少你给了它机会。
如果正如 Guffa 所说,加载的脚本不使用模块模式,那么您需要将这些规则应用于它的所有符号。这也是为什么模块模式是一件好事 (tm) 的另一个原因。 ;-)
关于javascript - 是否可以销毁加载的 JavaScript,包括函数和局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605899/