10

here所述,在javascript中清空现有数组(而不是分配新数组)的最有效方法似乎是使用:

array.length = 0;

相同的操作是否适用于普通对象?(又名“关联数组”或“字典”)如果不是,那么清空现有 javascript 对象的最有效方法是什么?

我认为分配一个新的不是最好的选择,因为它会将一些额外的工作推给垃圾收集器,并会在堆上分配一些新的内存,但我可能错了。

我需要一个至少适用于 Chrome 和 Firefox 的解决方案。

4

1 回答 1

27

最短的方法是创建一个新对象。无论如何,您最终都会收集所有属性。

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

您还可以遍历属性并单独删除它们:

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

还值得指出的是,作为一个冗长的问题,JavaScript 有带属性的对象,而不是关联数组。

于 2013-03-03T20:01:58.230 回答