2012-06-20 58 views
3

這是一個與內存使用和「新」關鍵字有關的問題。我需要你的建議和偏好,以便在本地方法中使用「新」。JavaScript - 使用新關鍵字的標準

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) 
    }); 
}

在這裏,我不分配寫的代碼反對任何變量。

我現在有點困惑。哪種方式更好,分配給變量還是不分配給變量?如果我在本地方法作用域之後分配給變量,則該對象將從內存中取出,但是如果我不分配將會發生的情況?它會被垃圾回收處理嗎?什麼是做這件事的最好方法是什麼?我個人更喜歡分配給一個變量;那是對的嗎?什麼時候該對象會被破壞,如果我沒有分配給一個變量?

+0

我認爲構造函數不適合作爲定義私有變量並接受相同參數的函數。構建你不需要參考的東西有什麼意義? –

+0

您在理解您的代碼時遇到了一些問題:P http://stackoverflow.com/questions/11117654/in-javascript –

回答

2

JavaScripts垃圾回收器將處理項目,因爲它們超出範圍,並且不再可訪問;無論您是否將其分配給變量,對於您的Ajax.Updater對象都是如此。

至於你是否應該將它分配給一個變量? 我不會。它清楚地表明沒有別的東西再次指向那個對象。如果你將它分配給一個變量,人們將開始尋找變量的使用位置。

垃圾回收器是聰明智能。你很少需要擔心垃圾收集器是否會收拾東西。在99.99999999%的情況下,它會。

0

如果您隨後需要訪問該對象,則只應將其分配給一個變量。無論哪種方式,對象將被垃圾收集,所以你最好自己保存一個變量聲明和幾個字節。