1

mootools 有析构函数吗?我有一个统计类实例的静态变量。
问题是当实例被销毁时,我无法更新我的静态变量。无论如何要扩展析构函数,以便我可以更新该变量?

4

1 回答 1

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.

我知道这很hacky,但它可能使您能够明智地销毁类并进行清理。

于 2012-07-27T08:19:57.540 回答