2012-07-26 70 views
1

mootools是否具有析構函數?我有一個靜態變量來計算類的實例。
問題是,當一個實例被破壞,我無法更新我的靜態變量。 有沒有辦法擴展析構函數,所以我有更新該var的可能性?mootools析構函數

回答

1

從未見過的mootools這個工作,通常情況下,你讓瀏覽器垃圾回收等等...

這是迄今爲止沒有一個理想的解決方案 - 它需要知道該實例的範圍(窗口,其他對象等等)。

混合類:

var Destructor = new Class({ 
    destruct: function(scope) { 
     scope = scope || window; 
     // find the object name in the scope 
     var name = Object.keyOf(scope, this); 
     // let someone know 
     this.fireEvent && this.fireEvent('destroy'); 
     // remove instance from parent object 
     delete scope[name]; 
    } 
}); 

你再使用它的類,你想:

var a = new Class({ 

    Implements: [Events, Options, Destructor], 

    initialize: function(options) { 
     this.setOptions(options); 
     this.hai(); 
    }, 

    hai: function() { 
     console.log('hai'); 
    } 

}); 

最後,你創建類的實例綁定到onDestroy

var instance = new a({ 
    onDestroy: function() { 
     console.log('goodbye cruel world. time to set affairs in order!'); 
    } 
}); 


instance.destruct(); 

instance.hai(); // reference error. 
事件

我知道這很冒險,但它可能會讓你明智地摧毀課程並做cl eanup。

+0

非常感謝您的解決方案。我想我會使用它,直到mootools允許我們使用特定的析構函數。 – user1552480 2012-07-27 11:57:09