2011-02-23 124 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

相關問題