2010-04-29 11 views
56

C'è qualche differenza tra $(".selector").size() e $(".selector").length?jQuery size() metodo vs lunghezza attributo

+21

Dal codice: 'size: function() {return this.length; } ': P – Matt

+5

A partire da jQuery 1.8, [' .size() '] (http://api.jquery.com/size/) è [** deprecato **] (http://bugs.jquery.com/ticket/10657) in favore di ['.length'] (http://api.jquery.com/length/), perché' .length' ha prestazioni leggermente migliori. –

risposta

74

No. size() restituisce length. Utilizzando length si evita solo una chiamata al metodo in più.

+0

Attenzione che '.size()' è ora (a partire da 1.8) deprecato e '.length' è indicato nei documenti come approccio appropriato. Vedere https://api.jquery.com/size/ – jinglesthula

3

.size() è una chiamata di metodo, che restituisce la proprietà length. Quindi chiami il metodo per restituire la proprietà o recuperi direttamente la proprietà.

Il metodo (.size()) è probabilmente quello che dovresti utilizzare, in quanto è stato probabilmente implementato per astrarre la possibilità di modificare la proprietà della lunghezza.

9

Entrambi vi daranno lo stesso risultato ma .lunghezza è leggermente più veloce.

Vedi http://api.jquery.com/size/:

La proprietà .length è un modo leggermente più veloce per ottenere queste informazioni.

7

La lunghezza è molto più veloce.

Vedere il tutorial size vs. length.

+0

Non definirei una differenza di runtime <0,5% molto più veloce (http://jsperf.com/size-vs-length) ma c'è un sovraccarico associato alla funzione chiamata. –

0

jQuery .size() e .length restituiscono entrambi il numero di elementi nell'oggetto jQuery.

Dimensione() e lunghezza in jQuery sia restituisce il numero di elementi in oggetto, ma la lunghezza è più veloce rispetto alla dimensione perché lunghezza è una proprietà e dimensione è un metodo e proprietà di lunghezza non avere il sovraccarico di una chiamata di funzione.

fonte: http://www.namasteui.com/difference-between-size-and-length-of-jquery/

+0

Beh, questa è la stessa risposta come la risposta accettata che è stata data 5 anni fa. – jantimon

0

dimensioni JQuery() è un metodo & length() è di proprietà e la proprietà è più veloce di metodo perché size() chiama internamente lunghezza. quindi meglio chiamare direttamente la lunghezza.

0

Se si legge la proprietà length, sarà necessario solo il tempo necessario per accedere a una proprietà dell'oggetto.

Tuttavia, se si chiama size(), prima verrà chiamata una funzione, questa funzione leggerà la proprietà length internamente e quindi restituirà quel valore al chiamante.

Si può chiaramente vedere che si sta facendo la stessa cosa in entrambi i casi. Ma se chiami la funzione, allora includerà il tempo per chiamare una funzione + restituendo anche quel valore.