Aunque los objetos jQuery actúan como matrices, en realidad son solo objetos tipo array. Un objeto similar a una matriz es un objeto que utiliza claves numéricas y que tiene una propiedad length
, que es el mínimo necesario para la compatibilidad con el native array methods.
Dado que los objetos jQuery son solamente matriz similar y no reales Array
objetos, las operaciones de matriz nativas (como indexOf
o reverse
) no puede ser llamado directamente. Sin embargo, puede usar Array.prototype
o extender la funcionalidad de jQuery.
$('div').reverse(); // TypeError: $("div").reverse is not a function
// we can use Array.prototype though
Array.prototype.reverse.apply($('div'));
// or we can extend jQuery very easily
$.fn.reverse = Array.prototype.reverse;
$('div').reverse(); // now it works!
Tiene usted razón en el supuesto de que Firebug no incluye ninguna-carcasa especial para dar formato a los objetos jQuery. Una búsqueda rápida revela a relevant post en la lista de correo de Firebug. Suponiendo que la información sigue siendo correcta (la publicación es de enero) Firebug formateará un objeto como una matriz si tiene un longitud finita y un splice
método.
JQuery cumple estos dos criterios, pero their implementation of splice
no es más que una copia directa del método nativo Array
. No está documentado, lo que significa que es solo para uso interno, o tal vez agregado únicamente con el propósito de engañar a Firebug para que formatee los objetos jQuery correctamente.
¿Qué te hace creer que no se trata solo de objetos con teclas numéricas? – Marius
Por un lado, Firebug muestra objetos jQuery como matrices, pero no como objetos creados manualmente, y dudo que tenga un manejo especial para jQuery. – AnC