Estoy teniendo dificultades para convertir un NodeList
a un array en IE 8. Los siguientes funciona perfectamente en Chrome, pero en IE 8 toArray()
no es reconocida como válida:Convertir NodeList a la matriz
NodeList.prototype.toArray = function() {
var a = [];
for (var i = 0, len = this.length; i < len; i++) {
a[i] = this[i];
}
return a;
}
document.all.tags("div").toArray();
I intenté agregar una función prototipo a una matriz solo para verificar mi cordura y funciona correctamente. Eso me hace pensar que IE 8 en realidad no devuelve un NodeList
? Aquí está un ejemplo completo:
¿Qué estoy haciendo mal?
no existe una norma actual que dice que 'NodeList' tiene que ser una función constructora visible y modificable, o que si hay una función de constructor visible como 'NodeList' que se usará como el tipo de retorno de todos los métodos de devolución de NodeList. (Después de todo, una NodeList 'childNodes' y una NodeList' getElementsByTagName' hacen cosas muy diferentes.) La norma ECMAScript especifica el prototipado en los objetos JS nativos y es confiable; la creación de prototipos en los Nodos DOM y otros objetos no definidos por el estándar de lenguaje no es confiable y debe evitarse. – bobince