2012-07-26 4 views
1

Есть ли у mootools деструктор? У меня есть статическая переменная, которая учитывает экземпляры класса.
Проблема в том, когда экземпляр уничтожен, я не могу обновить статическую переменную. В любом случае, для расширения деструктора, поэтому у меня есть возможность обновить этот var?mootools destructor

ответ

1

Никогда не видел это делается в MooTools, как правило, вы позволяете браузеры собирать мусор так ...

это далеко не идеальное решение - это нужно знать объем экземпляра (окна, другой объект и т.д.).

класс

Mixin:

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