我有这样的功能:

var InitScrollbar = function () {
... variables, object, handlers, ecc
}


在调整大小时,我想销毁它以及其中的所有变量/处理程序/对象。尝试过:

$(window).on("resize", function (e) {
    InitScrollbar = null;
    //InitScrollbar();
});


但调整大小后,其中的处理程序将再次起作用。
我怎么能销毁一切?

最佳答案

您可以实现一种dispose方法来调用,例如:

var InitScrollbar = function () {
   // variables, object, handlers, ecc
   this.Dispose = function(){
      //clear / detach all your handlers here
   }
}


然后以这种方式使用它:

$(window).on("resize", function (e) {
    InitScrollbar.Dispose();
    //InitScrollbar();
});


编辑:
由于您没有实例化InitScrollbar,因此应更改方法,请尝试以下操作:

var InitScrollbar = function () {
   // variables, object, handlers, ecc
}

var DisposeScrollbar = function(){
   //clear / detach all your handlers here
   //take care of correctly reference to InitScrollbar properties
}


然后以这种方式使用它:

$(window).on("resize", function (e) {
    DisposeScrollbar();
});

关于javascript - 如何删除函数及其中的所有对象/处理程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20496666/

10-12 13:50