3

这是一个与内存使用和“new”关键字有关的问题。我需要您对在本地方法中使用“新”的建议和偏好。

get: function ()
{
    var get = new Ajax.Updater('resourceList',
    "url",
    {
        method: 'POST',
        onComplete: this._onComplete.bind(this)
    });
}

在上面的代码中,我将对象分配给一个没有在任何地方使用的局部变量,我也可以按以下方式编写代码

get: function ()
{
    new Ajax.Updater('resourceList',
    "url",
    {
        method: 'POST',
        onComplete: this._onComplete.bind(this)
    });
}

在这里,我没有将对象分配给任何变量。

我现在有点困惑。哪种方式更好,分配给变量还是不分配给变量?如果我在本地方法范围之后分配给一个变量,该对象将从内存中删除,但如果我不分配会发生什么?它会被垃圾收集处理吗?什么是最好的方法?我个人更喜欢分配给变量;那是对的吗?如果我不分配给变量,对象什么时候会被销毁?

4

2 回答 2

2

JavaScripts 垃圾收集器将在项目超出范围时处理它们,并且不再可访问;Ajax.Updater无论您是否将其分配给变量,这对于您的对象都是正确的。

那么你是否应该将它分配给一个变量?我不会。它清楚地表明,没有其他任何东西再次引用该对象。如果将其分配给变量,人们将开始查看该变量的使用位置。

垃圾收集器非常聪明和智能。您很少需要担心垃圾收集器是否会捡起一些东西。在 99.99999999% 的情况下,它会。

于 2012-06-20T10:24:37.657 回答
0

如果您随后需要访问该对象,您应该只将它分配给一个变量。无论哪种方式,对象都将被垃圾收集,因此您最好为自己保存一个变量声明和几个字节。

于 2012-06-20T10:26:08.233 回答