有没有什么方法可以为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对象时销毁特定的会话数据。
有什么想法吗?
答案 0 :(得分:2)
您可以在window.onunload
或window.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.onbeforeunload
或window.onunload
进行最后时刻的调整。
如果从onbeforeunload
返回一个字符串,它将提示用户该字符串为confirm
对话框,以确定是否要离开。这主要用于提示用户保存其工作或类似的状态保留操作。