DOM обычно возвращает NodeList
для большинства операций, таких как getElementsByTagName
.
Хотя NodeList
почти выглядит как массив, это не так. У него есть свойство length
, как у массива, и метод item(index)
для доступа к объекту по заданному индексу (также доступный с помощью записи [index]
), но на этом сходство заканчивается.
Таким образом, чтобы иметь возможность использовать замечательные методы массива без переписывания их всех для NodeList
, приведенная выше строка полезна.
Другое использование преобразования его в массив - сделать список статическим. Списки NodeList обычно являются живыми, что означает, что если изменения документа происходят, объект NodeList автоматически обновляется. Это может вызвать проблемы, если возвращаемый вам объект jQuery постоянно меняется прямо у вас под носом. Попробуйте следующий фрагмент , чтобы проверить жизнеспособность NodeLists.
var p = document.getElementsByTagName('p');
console.log(p.length); // 2
document.body.appendChild(document.createElement('p'));
// length of p changes as document was modified
console.log(p.length); // 3