var a = {
"example" : true
};
var x = [a], y = [a];
delete x[0];
console.log(y);
在上面的代码中,是否可以删除,而不仅仅是x中的引用?是否可以删除对象本身,而不是参考
var a = {
"example" : true
};
var x = [a], y = [a];
delete x[0];
console.log(y);
在上面的代码中,是否可以删除,而不仅仅是x中的引用?是否可以删除对象本身,而不是参考
这是给垃圾收集器。只要有一些对象的引用,它就不会被垃圾收集。
如果您希望清理它,请确保没有更多的引用。
所以要回答你的问题,不,没有办法明确销毁一个对象。如果a
和y[0]
仍然引用它,则不能从您的x
变量中执行此操作。
要清楚,x[0]
没有引用a
。它指向a
引用的内存中的相同对象。
那么,如果不知道索引,就没有办法从y中删除一个? – glider 2011-02-23 21:43:50
@glider:除了取消引用'y'数组中的所有项,或者遍历数组来查找它(或者如果支持使用'.indexOf()'),那么不是真的。 – user113716 2011-02-23 21:45:54
谢谢,这就是我想知道的。 – glider 2011-02-23 21:51:37
我想你应该参考这个问题。
怎么样“删除一个;” ? – Krumelur 2011-02-23 21:35:55
要取消引用“a”对象 – 2011-02-23 21:39:35
如果要手动管理内存,请将其忽略。当GC认为它合适,并且它可以证明没有更多引用时,该对象被删除,而不是第二次。 – delnan 2011-02-23 21:43:31