Javascript解构器

时间:2011-08-26 18:29:04

标签: javascript ajax

有没有什么方法可以为JavaScript中的对象定义一个析构函数,当对象被丢弃时会自动调用它?

我正在创建我的obj:

function SomeObject(){
    this.test = null;

    this.method = function(){
      alert("Testing Method");
    };

    this.destroy = function(){
      // Destroy stuff here
    };
}

var test = new SomeObject();

我可以在需要时调用destroy但是当用户退出页面时我无法调用destroy。我需要这样做的原因是我使用ajax调用php中的函数来保存会话数据。我想在完成特定的js对象时销毁特定的会话数据。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以在window.onunloadwindow.onbeforeunload事件中调用该功能。但请注意,即使用户在您自己的应用程序中导航或使用后退和前进按钮时,也可能会调用此方法。

答案 1 :(得分:2)

您可以绑定到卸载事件:

function SomeObject(){

    ...

    var that = this;
    $(window).unload(function() {
        that.destroy();
    });
}

这样,当用户退出页面时,将调用destroy方法。

如果没有jQuery,您可以使用以下命令绑定事件:

var event = 'load';
var handler = function() { ... };
if (window.addEventListener) {
    window.addEventListener(event, handler, false);
} else {
    window.attachEvent('on'+event, handler);
}

答案 2 :(得分:2)

您不能对对象使用解构器,但可以使用window.onbeforeunloadwindow.onunload进行最后时刻的调整。

如果从onbeforeunload返回一个字符串,它将提示用户该字符串为confirm对话框,以确定是否要离开。这主要用于提示用户保存其工作或类似的状态保留操作。