在JavaScript中迭代对象的属性的最快方法是什么? - 代码日志

在JavaScript中迭代对象的属性的最快方法是什么?

我知道我可以遍历一个对象的属性,如下所示:

for (property in object)
{
    // do stuff
}

我也知道在Javascript中迭代数组的最快方法是使用一个递减的while循环:

var i = myArray.length;
while (i--)
{
    // do stuff fast
}

我想知道是否有类似于减少的while循环来迭代对象的属性。

编辑:只是一个关于可伸缩性的答案 – 我不是。

1)没有其他方法枚举属性,而不是使用for..in(即直到ES5 Object.keys被实现)。也许如果你说出原来的问题,有人可以提出一个优化方法。

2)我觉得很难相信实际的枚举比在循环体中使用的属性更多。

3)你没有指定你正在开发的平台。答案可能取决于它,可用的语言特性也取决于它。例如。在SpiderMonkey(Firefox JS解释器)中,如果您确实需要这些值而不是键,则可以为每个(var x in arr)(docs)使用。它比(var i in arr){var x = arr [i]; …}

(.. .. ..)SpiderMonkey实验现在被标准的for(.. of ..)结构所取代。

4)你可能没有将它包含在你的代码段中,但是在迭代中做一个更快的方法是确保在循环中使用的变量在包含循环的函数中声明,即:

//slower
for (property in object) { /* do stuff */ }

//faster
for (var property in object) { /* do stuff */ }

5)与(4)相关:在尝试优化Firefox扩展时,我曾经注意到,将紧密循环提取到单独的函数中改进了其性能(link)。 (显然,这并不意味着你应该永远这样做!)

http://stackoverflow.com/questions/1573593/whats-the-fastest-way-to-iterate-over-an-objects-properties-in-javascript

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在JavaScript中迭代对象的属性的最快方法是什么?