Javascript解构器

Javascript解构器,javascript,ajax,Javascript,Ajax,是否有任何方法可以为JavaScript中的对象定义析构函数,当对象被丢弃时会自动调用该析构函数 我正在创建我的obj,如下所示: function SomeObject(){ this.test = null; this.method = function(){ alert("Testing Method"); }; this.destroy = function(){ // Destroy stuff here }; }

是否有任何方法可以为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对象时销毁特定的会话数据


有什么想法吗?

您可以在
窗口中调用该函数。onunload
或events。但请注意,即使用户在您自己的应用程序中导航或使用后退和前进按钮,也可能会调用此命令。

您可以绑定到卸载事件:

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);
}

不能对对象使用解构器,但可以使用
window.onbeforeunload
window.onunload
进行任何最后时刻调整


如果您从
onbeforeunload
返回字符串,它将以
确认
对话框的形式提示用户该字符串是否要离开。这主要在您希望提示用户保存其工作或类似的状态保留操作时非常有用。

检查是否有destroy()方法,为什么不在处理完对象后调用它呢?Einacio,我会,但如果用户退出页面或更改应用程序中的页面,我无法调用它。我要试试窗户。不过要卸载。不。JavaScript中没有“析构函数”,在不同的浏览器/情况下使用onunload/onbeforeunload是不可靠的(将历史导航或刷新视为简单的反例)。考虑替代方法。通常,当只需要完成一些状态保留请求(设置cookies、LoalStur蓄等)时,应该使用<代码> OnBooFunEng/<代码>提示用户保存,以及<代码> OnLouns。我非常确定所有现代浏览器和IE7+都支持
onbeforeunload
(测试并让我知道)。@zzzzBov
onbeforeunload
除Opera外,所有浏览器(甚至IE6)都支持@zzzzBov不幸的是,这取决于“unload”的原因:(当窗口被卸载时,你的整个应用程序都被卸载了。”RoestDead,我不明白你试图用那个评论来做什么。请考虑使用一种民用语调,并试图确定一个实际的点。在关闭一个窗口后,页面状态可以持续多种方式,这似乎是你所不知道的。值得注意的是,这个解决方案需要jQuery.+1,因为这是唯一提到一些警告的答案(虽然我认为这不是唯一的)。这对我来说很好,我希望在刷新或按下后退按钮时将其销毁。