2011-02-12 15 views
14

C'è qualche ragione per cui dovrei usare $('#x>div').get(1) quando invece potrei usare solo $('#x>div')[1]? C'è una differenza?jQuery: array zero vs function get zero: [0] vs get (0)

+0

Questo è un * esattamente * duplicato, ma non ho il link. –

+5

Ecco perché ho spiegato le parole. Quindi sarebbe più facile trovarlo in seguito con una ricerca. Ho appena spiegato un po 'di parole in più se è d'aiuto. @ pst –

risposta

14

No, nessuna differenza. jQuery contiene tutti i nodi DOM in una matrice.

$().get(1) === $()[1]

fonte --jQuery snippet--

get: function(num) { 
    return num == null ? 
     // Return a 'clean' array 
     this.toArray() : 

     // Return just the object 
     (num < 0 ? this[ this.length + num ] : this[ num ]); 
}, 

Come si può vedere, .get() senza argomenti tornerà tutti i nodi come Array. Questo non può essere realizzato con parentesi.

7

No, e le prestazioni è about the same perché la creazione di un oggetto jQuery domina gamma/funzione di tempo di accesso:

Browser  get Ops/sec array Ops/sec #tests 
Chrome 9  20,555  22,671   2 
+2

eh .. Mi aspetto che il metodo dell'array sia ** più ** efficiente in quanto non dovresti passare attraverso la funzione. –

+1

Whoops, Oh, è .. Scusa pensavo in termini di millisecondi spesi, non operazioni al secondo –

+8

Il tuo confronto è oscurato dal fatto che nel tuo test stai facendo anche un'operazione comparativamente pesante (creando un oggetto jQuery e selezione DOM). Se rimuovi quelli dal test, la differenza è mostrata enorme. http://jsperf.com/get-vs-array/2 'array: 123,366,553/get: 4,062,520' Quindi @ l'aspettativa di George era assolutamente corretta. – user113716

Problemi correlati