Javascript mootools析构函数

Javascript mootools析构函数,javascript,mootools,Javascript,Mootools,mootools有析构函数吗?我有一个统计类实例的静态变量。 问题是当一个实例被销毁时,我不能更新我的静态变量。 解构函数是否需要扩展,以便我能够更新该变量?在mootools中从未见过这样做,通常情况下,您让浏览器进行垃圾收集,所以 这不是一个理想的解决方案-它需要知道实例的范围(窗口、其他对象等) 混合类: var Destructor = new Class({ destruct: function(scope) { scope = scope || window;

mootools有析构函数吗?我有一个统计类实例的静态变量。
问题是当一个实例被销毁时,我不能更新我的静态变量。
解构函数是否需要扩展,以便我能够更新该变量?

在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.

我知道这很有黑客味,但它可能会让你明智地销毁类并进行清理。

在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.

我知道这有点骇人,但它可以让您明智地销毁类并进行清理。

非常感谢您的解决方案。我想我会一直使用它直到mootools允许我们使用特定的析构函数。非常感谢您的解决方案。我想我会使用它直到mootools允许我们使用特定的析构函数。