Tengo otra pregunta sobre la arquitectura de jQuery. $('div')
construye un nuevo objeto jQuery
:¿Por qué es posible consultar jQuery ('div') como una matriz?
$('div') instanceof jQuery; // true
Me gustaría saber por qué es posible consultar como si fuera una matriz, acabase no es una matriz?
$('div')[0]; // returns the first div in the document as a DOM node.
$.isArray($('div')); // false
Me encanta esta sintaxis, se ve tan limpio! También me di cuenta de esto devuelve los nodos DOM como una matriz:
console.log($('div'));
Puede alguien explicar cómo implementar este comportamiento a mis propios objetos?
Mi propio enfoque era hacer una matriz con algunos métodos como éste:
var a = ['a', 'b', 'c'];
a.method = function(){ return 'test'; };
a; // ['a', 'b', 'c']
a[0]; // 'a'
a.method(); // 'test'
Sin embargo, esto no parece ser el camino jQuery lo hace, ya que es en realidad una matriz:
$.isArray(a); // true
Me gustaría saber cómo jQuery hace esto para aprender y ver si es una solución mejor que la mía.
* Se puede acceder a cualquier propiedad * usando notación '[] '. No solo índices. Así que al igual que '$ ('div') [0]', puedes hacer '$ ('div') ['jquery']', que te dará el número de versión de jQuery. –
@amnotiam Lo sé. Pero cuando imprimo objetos usuales en las consolas, no generan una matriz. –
Ah, si está preguntando específicamente sobre la salida de la consola, entonces realmente es solo la consola que adivina lo que usted le dio. [La respuesta de jay] (http://stackoverflow.com/a/8793090/1106925) muestra lo que suelen hacer las consolas. –