Деструкторы в Mootools

К сожалению, в Mootools нет деструкторов. Если же разрабатывать большое приложение без этого важного элемента ООП, то гарантирована утечка памяти. Каждый созданный объект будет съедать ее и не высвобождать и скоро страничка браузера с приложением будет занимать 500 МБ ОЗУ. Это непорядок. 

Пробуем сделать деструктор.

Напишем класс с одним методом:
var Destructor = new Class({ 
    destroy: function(scope) { 
        scope = scope || window; 
        var name = Object.keyOf(scope, this); 
        this.fireEvent && this.fireEvent('destroy'); 
        delete scope[name]; 
    } 
});

 

В принципе , все. Деструктор готов, и даже генерирует событие onDestroy.

 

Осталось только подключить его к любому нашему классу. Для этого используем свойство Implements

 

var myClass = new Class({ 
    Implements:[Events,Destructor], 
    initialize:function(){ 
        console.log('Hello, world'); 
    } 
}); 
//Создадим экземпляр класса 
var myObject = new myClass(); 
//Уничтожим объект 
myObject.destroy();

 

Здесь важно понимать, что автоматически деструктор все равно не вызывается. Программист должен позаботиться об этом сам. Деструктор также удобно использовать в объектах, где свойства также являются объектами.

Добавить комментарий


Защитный код
Обновить