getElementsByTagName
возвращает NodeList
, что аналогично Array
, за исключением того, что оно не поддерживает все эти функции-прототипы.
Для плавного преобразования такого объекта, подобного массиву, в массив,use:
var arr = Array.prototype.slice.call(somenodelist, 0);
arr
будет почти идентичным, за исключением того, что теперь он поддерживает Array
поддерживаемых функций-прототипов, например concat
.
То, что функция на самом деле делает, возвращаетчастичное Array
, содержащее элементы somenodelist
, если быть точным все, начиная с индекса 0 и после.Очевидно, что это всего лишь элементы, поэтому это хитрость для преобразования объектов, подобных массивам, в реальные Array
s.