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