如这里所述,似乎在JavaScript中清空现有数组(而不是分配一个新的数组)的最有效方法是使用:
array.length = 0;
同样的操作对于普通对象是否有效?(也称为“关联数组”或“字典”) 如果不行,清空现有javascript对象的最有效方法是什么?
我认为分配一个新对象并不是最好的选择,因为它会给垃圾收集器带来一些额外的工作,并在堆上分配一些新的内存,但我可能是错的。
我需要一个至少在Chrome和Firefox中使用的解决方案。
如这里所述,似乎在JavaScript中清空现有数组(而不是分配一个新的数组)的最有效方法是使用:
array.length = 0;
同样的操作对于普通对象是否有效?(也称为“关联数组”或“字典”) 如果不行,清空现有javascript对象的最有效方法是什么?
我认为分配一个新对象并不是最好的选择,因为它会给垃圾收集器带来一些额外的工作,并在堆上分配一些新的内存,但我可能是错的。
我需要一个至少在Chrome和Firefox中使用的解决方案。
var foo = {
a: 5,
b: 4
};
foo = {};
for (var prop in foo) {
if (foo.hasOwnProperty(prop)) {
delete foo[prop];
}
}
值得指出的是,在措辞上,JavaScript 有带有属性的对象,而不是关联数组。
foo = {}
会创建一个新的对象并且不会改变原来的对象。当有其他引用指向原来的对象时,这一点就显得很重要了:var foo = {a:5,b:4}; var bar = foo; foo = {};
最终,bar
仍然是 {a:5,b:4}
,而不是像人们可能期望的那样成为 {}
。 - Ignitordelete
逐个删除属性。 - Ignitor
array = null;
吗? - insertusernamehere