К сожалению, чтобы сделать это полностью надежно, вам нужно сделать это вручную, например:
function toArray(arraylike) {
var array= new Array(arraylike.length);
for (var i= 0, n= arraylike.length; i<n; i++)
array[i]= arraylike[i];
return array;
}
toArray(document.getElementsByTagName('img')).concat(...)
Хотя вы часто можете избегать использования Array.prototype.somearraymethod.call
, как в ответе Шона, это может не сработать в браузерах, где объект NodeList
, возвращаемый getElementsByTagName
, является "хост-объектом". *
ECMAScript определяет, что вызывающие методы в Array.prototype
должны работать для объектов native-JS с length
и целочисленными свойствами, а также для объекта arguments
, но он не дает никаких гарантий для хост-объектов. Как и почти все, что связано с объектами-хостами, браузер может свободно подставлять вас так, как ему нравится.