ゆう's Blog
NodeListとオブジェクトのプロパティ

const videos = document.querySelectorAll('video');

const videos = { video1: document.getElementById('video1'), video2: document.getElementById('video2'), video3: document.getElementById('video3'), };

1. const videos = document.querySelectorAll('video'); の場合
取得方法:
このコードはすべての<video>要素をNodeListとして取得します。
NodeListは配列のように動作し、インデックス(videos[0]など)を使って各<video>要素にアクセスできます。
特徴:
動的に動画の数が増えたり減ったりしても対応可能です。例えば、新たに<video>タグを追加しても、このコードで取得できます。
ループ処理(forEachなど)に適しており、簡単に全ての動画を操作できます。

2. const videos = { video1: document.getElementById('video1'), ... }; の場合
取得方法:
このコードは特定の<video>要素をオブジェクトのプロパティとして格納します。
動画を明示的に識別し、プロパティ名(videos.video1など)でアクセスできます。
特徴:
動的ではなく、手動で<video>要素を管理する形になります。例えば、新しい動画を追加するたびに、このオブジェクトにプロパティを追加する必要があります。
直接的に管理するため、動画の名前(IDなど)を使って識別しやすくなります。

違いまとめ
特性querySelectorAllオブジェクト (videos)
対象の取得方法<video>タグ全体を一括取得明示的にIDを指定して取得
動的な対応動画の数が変わっても柔軟動画を増やしたら手動で追加入力が必要
アクセス方法インデックスで参照 (videos[0])キーで参照 (videos.video1)
ループ処理との相性適している手動管理に向いている