備忘録がてら。
ブラウザ上で[document.getElementsByClassName()]等を実行した場合に返却される[HTMLCollections]はArrayのような動きをするが、最低限の機能しか備わっていない。
もし[Array.prototype.forEach()]等を実行したいのであれば、[Array.prototype.forEach.call()]を利用すると実行可能。
※ Indexed Collectionという規格に沿っていれば利用できるみたい
例:demo1.js
Array.prototype.forEach.call(document.getElementsByClassName('video-stream'), console.log);
もしくは以下のようにいっその事Arrayへ変換してやると楽で良い。
例:demo2.js
[...document.getElementsByClassName('video-stream')].forEach(console.log);
追記
demo2.jsで行われているのは分割代入ではないのではないかという指摘を頂いたので修正しました。
個人的には微妙なラインだと思っているのですが、曖昧なことを書くべきではないと思ったためです。
ご指摘ありがとうございます。