gpt4 book ai didi

javascript - 是否可以销毁加载的 JavaScript,包括函数和局部变量?

转载 作者:行者123 更新时间:2023-11-30 10:56:00 24 4
gpt4 key购买 nike

我知道。可以将 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,因此设置为 undefinednull 将破坏引用:

NiftyThing = undefined;

您可以对冲您的赌注:

NiftyThing = undefined;
try { delete NiftyThing; } catch (e) { }

在所有情况下,由 JavaScript 实现来确定没有未完成的对加载脚本的外部引用并进行清理,但至少你给了它机会。

如果正如 Guffa 所说,加载的脚本不使用模块模式,那么您需要将这些规则应用于它的所有符号。这也是为什么模块模式是一件好事 (tm) 的另一个原因。 ;-)

关于javascript - 是否可以销毁加载的 JavaScript,包括函数和局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com