2011-02-23 96 views
6
var a = { 
    "example" : true 
}; 

var x = [a], y = [a]; 

delete x[0]; 

console.log(y); 

在上面的代码中,是否可以删除,而不仅仅是x中的引用?是否可以删除对象本身,而不是参考

+0

怎么样“删除一个;” ? – Krumelur 2011-02-23 21:35:55

+0

要取消引用“a”对象 – 2011-02-23 21:39:35

+1

如果要手动管理内存,请将其忽略。当GC认为它合适,并且它可以证明没有更多引用时,该对象被删除,而不是第二次。 – delnan 2011-02-23 21:43:31

回答

10

这是给垃圾收集器。只要有一些对象的引用,它就不会被垃圾收集。

如果您希望清理它,请确保没有更多的引用。

所以要回答你的问题,不,没有办法明确销毁一个对象。如果ay[0]仍然引用它,则不能从您的x变量中执行此操作。

要清楚,x[0]没有引用a。它指向a引用的内存中的相同对象。

+0

那么,如果不知道索引,就没有办法从y中删除一个? – glider 2011-02-23 21:43:50

+1

@glider:除了取消引用'y'数组中的所有项,或者遍历数组来查找它(或者如果支持使用'.indexOf()'),那么不是真的。 – user113716 2011-02-23 21:45:54

+0

谢谢,这就是我想知道的。 – glider 2011-02-23 21:51:37

相关问题