ECMA6Script中[] .forEach.call(...)的替代方案

时间:2015-05-20 07:12:57

标签: javascript ecmascript-6

我在所有应用程序中使用以下代码来枚举DOM元素:

var elements = document.querySelectorAll('div');
[].forEach.call(elements, function(element) {
    div.style.color = 'green';
});

此代码有效,但[].forEach.call(...)在大型应用程序中不易阅读。在没有使用定制函数或原型的情况下,ECMA6Script中是否有更简单的DOM枚举原生方式?

3 个答案:

答案 0 :(得分:5)

你不会再在ES6中使用forEach了。您使用for of loop

for (let div of document.querySelectorAll('div'))
    div.style.color = 'green';

除此之外,您可以使用Array.from将可迭代对象强制转换为数组,然后在其上调用.forEach;但实际上对于即将推出的DOM规范,querySelectorAll将返回以ES6方式从Elements继承的Array集合,这是不必要的 - 因此您可以调用.forEach直接在它上面的方法!

答案 1 :(得分:2)

您可以使用Array.from

Array.from(elements).forEach(elem => ...)

答案 2 :(得分:1)

在ES6中,您可以使用spread operator

[...document.querySelectorAll('div')].forEach(e => console.log(e))