2013-03-03 60 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

相关问题