我不知道你为什么要做出这一困难。 Javascript是一种垃圾收集语言。所有你需要做的事情是让任何东西都没有更多的引用。
所以,如果你开始:
var obj = {
data: "foo";
};
,现在你想摆脱或“免费”的那个对象,所有你需要做的就是明确提到它:
obj = null;
由于不再有在代码中,你最初定义并分配给obj
该数据结构的任何引用,垃圾收集器会释放它。
的对象不能自我毁灭(因为其他的事情可能有对它的引用)。您可以通过删除对它的所有引用来释放它。一个对象可以清除到其他事情它自己的引用,尽管这通常不需要为删除所有引用对象本身也将其持有的引用的护理(有一些错误与JS和DOM之间的循环引用除外在某些较旧的浏览器中 - 特别是IE)。
一个时候,你可以明确的“删除”事情是,如果你有,你要删除的对象的属性。所以,如果您有:
var obj = {
data: "foo",
count: 4
};
而且你要删除的“数据”属性,你可以这样做与此:
delete obj.data;
如果属性/关键是通过变量编程分配
像这样:
var key = "xxx";
obj[key] = "foo";
您可以删除与该键:
delete obj[key];
究竟是什么错误? –
无效赋值左手边 [Break On This Error] destroy:function(){this = null;} – Fostah
让对象封装析构函数有什么好处? obj.destroy()优于obj = null吗? – Tim