Вы можете использовать Array.fromдля преобразования коллекции в массив, который чище, чем Array.prototype.forEach.call:
Array.from(document.getElementsByClassName("myclass")).forEach(
function(element, index, array) {
// do stuff
}
);
В старых браузерах, которые не поддерживают Array.from, вам нужно использовать что-то вроде Babel.
ES6 также добавляет этот синтаксис:
[...document.getElementsByClassName("myclass")].forEach(
(element, index, array) => {
// do stuff
}
);
Остальная деструктуризация ...работает со всеми объектами, похожими на массивы, а не только с самими массивами, тогда для создания массива из значений используется старый добрый синтаксис массива.
В то время как альтернативная функция querySelectorAll(которая делает getElementsByClassNameустаревшей) возвращает коллекцию, которая forEachизначально имеет , другие методы, такие как mapили filterотсутствуют, поэтому этот синтаксис все еще полезен:
[...document.querySelectorAll(".myclass")].map(
(element, index, array) => {
// do stuff
}
);
[...document.querySelectorAll(".myclass")].map(element => element.innerHTML);
[].forEach.call(elsArray, function () {...}).