【发布时间】:2014-02-02 19:57:43
【问题描述】:
我试图弄清楚如何通过类方法删除对象。我希望能够创建一个具有从内存中释放对象的销毁方法的类。到目前为止,我所做的研究还没有定论。我知道垃圾收集最终会处理该对象,但我想要一种更明确的方式来销毁它。这可能吗?
// class constructor
var class = function () {
this.destroy = function () {};
};
// instance
var instance = new class();
instance.destroy();
console.log(instance); // should be null or undefined
【问题讨论】:
-
这种问题似乎来自对对象实例如何生存和死亡的误解。这根本不是 JS 的工作方式,但这并不意味着它是一个限制。这意味着事情需要以不同的方式完成。那么你在这里的真正目标是什么?
-
我的目标是快速删除对象,包括事件处理程序以及由于创建对象而创建的任何内容。 @尼克C
-
看看我的回答,我想你会得到你想要的。
-
我不是SO的常客,所以这么晚才遇到。我经常看到人们试图确定类的范围,但使用 document.head.appendChild() 将其加载到文档中。这将注册,并且 eval() - 即使 eval.call({},js) 将使用窗口范围来查找类。相反,不要将它添加到文档中(如果你是的话),而是使用类似 eval.call({},'class myclass{} (function(){ return new MyClass()})()') 来评估整个类.这不应该使用窗口,您可以随时替换 MyClass。
标签: javascript class object