Ho un'altra domanda riguardante l'architettura di jQuery. $('div')
costruisce un nuovo jQuery
oggetto:Perché è possibile interrogare jQuery ('div') come un array?
$('div') instanceof jQuery; // true
Mi piacerebbe sapere il motivo per cui è possibile interrogare è come un array, allthough non è un array?
$('div')[0]; // returns the first div in the document as a DOM node.
$.isArray($('div')); // false
Adoro questa sintassi, sembra così pulita! Ho anche notato questa restituisce i nodi DOM come un array:
console.log($('div'));
qualcuno può spiegare come implementare questo comportamento per i miei oggetti?
Il mio approccio è stato quello di fare un array con alcuni metodi come questo:
var a = ['a', 'b', 'c'];
a.method = function(){ return 'test'; };
a; // ['a', 'b', 'c']
a[0]; // 'a'
a.method(); // 'test'
Tuttavia questo non sembra essere il modo jQuery fa come questo è in realtà un array:
$.isArray(a); // true
Mi piacerebbe sapere come jQuery fa questo per imparare e vedere se è una soluzione migliore della mia.
È possibile accedere a tutta la proprietà * * utilizzando [] 'notazione'. Non solo indici. Quindi, come '$ ('div') [0]', puoi fare '$ ('div') ['jquery']', che ti darà il numero di versione di jQuery. –
@amnotiam Lo so. Ma quando stampo oggetti soliti nelle console, non producono un array. –
Ah, se stai chiedendo in particolare l'output della console, allora è solo la console a fare la sua ipotesi su ciò che hai dato. [j La risposta di Aman] (http://stackoverflow.com/a/8793090/1106925) mostra quali sono le console in genere. –