2013-03-03 38 views
7

如前所述Here,看來,在JavaScript來清空現有陣列(不是分配一個新的)最有效的方法是使用:什麼是最有效的方式來清空JavaScript中的純對象?

array.length = 0; 

是否爲純對象相同的操作工作? (又名「關聯數組」或「字典」) 如果不是,什麼是現有的JavaScript對象的最有效方法是什麼?

我認爲,分配一個新的是不是最好的選擇,因爲它會推一些額外的工作,垃圾收集,並在堆上分配一些新的內存,但我可能是錯的。

我需要工作至少與Chrome和Firefox的解決方案。

+0

看起來不像。長度= 0作品關聯數組(http://jsfiddle.net/7XVym/)。 – awbergs 2013-03-03 19:35:26

+3

JS沒有關聯數組。你的意思是物體嗎? – 2013-03-03 19:44:35

+0

你不能簡單地做'array = null;'? – insertusernamehere 2013-03-03 19:47:16

回答

22

最簡單的方法是創建一個新對象。反正你最終會收集垃圾收集所有的財產。

var foo = { 
    a: 5, 
    b: 4 
}; 
foo = {}; 

你也可以遍歷性和逐個刪除它們:

for (var prop in foo) { 
    if (foo.hasOwnProperty(prop)) { 
     delete foo[prop]; 
    } 
} 

這也是值得指出的是,作爲空話的問題,即JavaScript有對象性能,不關聯數組。

+3

應該注意的是,'foo = {}'創建一個新的對象,**將原始對象保留爲**。當對原始對象有其他引用時,這會有所不同:'var foo = {a:5,b:4}; var bar = foo; foo = {};' 最後,'bar'仍然是'{a:5,b4}'和** not **'{}',正如人們所期望的那樣。 – Ignitor 2016-02-29 13:21:51

相關問題