2014-10-26 25 views
0

如果我創建一個數組和一個對象。然後將該對象分配給數組的索引。我可以在不觸及數組的情況下編輯對象的屬性,如果我嘗試通過數組訪問它,則會反映更新的屬性。如何銷燬javascript數組引用

然後我想刪除該對象,並讓數組清除這些索引。我希望我可以通過將其設置爲空來做到這一點。似乎並非如此。下面

> var ar = [[],[]] 
undefined 
> var cool = {story: "bro"}; 
undefined 
> ar[0][20] = cool 
{ story: 'bro' } 
> cool.story = "gurl" 
'gurl' 
> ar[0][20] 
{ story: 'gurl' } 
> cool = null 
null 
> ar[0][20] 
{ story: 'gurl' } 
+4

你不能。 JS是一種垃圾收集語言;您將需要廢除對象的所有引用以清除它。做'arr [0] [20] = null' – Bergi 2014-10-26 21:36:06

+2

有了對象和數組,你確實在JS – 2014-10-26 21:43:56

+1

中分配了一個引用指針。這爲我清除它:http://stackoverflow.com/questions/8318357/javascript-pointer-reference-craziness-can-someone-explain-this – Swonkie 2014-10-26 21:48:16

回答

-3
for(p in obj) if(obj.hasOwnProperty(p)) delete obj[p]; 
obj = null; 

我我的手機上,現在繼承人簡化的NodeJS控制檯輸出,從而不能方便地測試這一點,但應該工作。

+0

爲什麼downvote?編輯:沒關係,我想我意識到 – 2014-10-26 21:49:15

+0

給我一些懶散的downvotes大聲笑我在我的手機上。我犯了一些簡單的錯誤,因爲我現在想同時做一堆東西,而這個觸摸屏鍵盤沒有幫助。基本邏輯在那裏。花括號是不必要的。它滿足了OP是否知道JS可以使其工作的任何問題。 – 2014-10-26 22:02:05

+0

當然,這不會傳播到更遠的數組中。它應該給出一個概念的基本證明。 – 2014-10-26 22:04:29