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

标签 javascript ajax

我知道。可以将 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/

相关文章:

javascript - 降落区 : Uncaught Error: No URL provided

javascript - 获取和javascript?就像 php 的 if $_GET[foo]

javascript - 在Vue中维护关联对象

javascript - 如何使不同页面的导航栏事件链接颜色变化

php - 无法使用 onSubmit 属性触发的 Ajax 响应阻止表单提交。

javascript - 如何使用 browserify 和closure/unlifyjs?

jquery - 重音ajax编码问题

javascript - 为每个用户刷新聊天正文

php - Ajax/jQuery 到 PHP 又回来了?

javascript - 简单的 AJAX 示例 - 从 txt 文件加载数据