我目前正在创建一个项目,其中每个可见元素都由javascript对象表示。
我需要在这个对象中使用一个方法,这个方法可以让我销毁它。
有一个对象的例子:
var example = function(some_args){
var self = this;
var references = {}; //this holds references to inputs within given view
this.createView = function(){
//here I`m doing "stuff" like filling innerHTML of container
//creating event delegate, etc.
}
this.destroy = function(){
self.elements["box"].parentNode.removeChild(self.elements["box"]); //box is a reference to container element
self.elements = null;
delete self;
}
现在,我的问题是:为了完全销毁这个对象,我是否正在做所有事情? 我没有任何其他对象或元素的引用。
编辑: 我看到你们中的一些人没有理解我的问题。 Barmar说得对,我感激不尽:)。
我知道GC,写“我正在破坏对象”比“我删除对象的最后一个引用,因此GC可以处理它”更容易:)
具体而言。考虑到我正在删除对象的最后一个引用,作为该对象的一部分的内部函数 - 还有什么我应该照顾的吗?或者我的代码完全正常,对象将被视为垃圾?
答案 0 :(得分:1)
您无法明确处理JS中对象的生命周期。
所以对于给定的问题:
我为了完全破坏这个对象,我在做什么?
唯一的答案是:
你不能这样做,因为JS中的一个对象只能被GC销毁,你无法与之交互。当一个物体可以到达时 - 它就活了。如果不是 - 那么它就是" Schroedinger's object"。
答案 1 :(得分:0)
Javascript有垃圾收集器,因此您不需要销毁该对象。你也不能