Czy jest jakikolwiek powód, dla którego powinienem używać $('#x>div').get(1)
, gdybym mógł zamiast tego użyć tylko $('#x>div')[1]
? Czy istnieje różnica?jQuery: array zero vs function get zero: [0] vs get (0)
Odpowiedz
Nie, nie ma różnicy. jQuery przechowuje wszystkie węzły DOM w tablicy.
$().get(1)
=== $()[1]
--jQuery źródło 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 ]);
},
Jak widać, .get()
bez argumentów zwróci wszystkie węzły jako Array. Nie można tego zrobić za pomocą nawiasów.
No, a wydajność jest about the same ponieważ stworzenie obiektu jQuery dominuje tablica/dostępu: funkcja czasu
Browser get Ops/sec array Ops/sec #tests
Chrome 9 20,555 22,671 2
huh .. Spodziewałbym się, że metoda tablicy będzie ** bardziej ** efektywna, ponieważ nie będziesz musiał przechodzić przez tę funkcję. –
Whoops, Oh, to jest ... Przepraszam, że myślałem w terminach milisekund spędzonych ,, nie operacji na sekundę –
Twoje porównanie jest zasłonięte przez fakt, że w teście również wykonujesz stosunkowo ciężką operację (tworzenie obiektu jQuery i wybór DOM). Jeśli usuniesz je z testu, różnica będzie ogromna. http://jsperf.com/get-vs-array/2 'array: 123,366,553/get: 4,062,520' Oczekiwanie @ @'s @ było absolutnie poprawne. – user113716
To * * dokładny duplikat, ale nie mam link. –
Dlatego właśnie wypisałem słowa. Więc łatwiej będzie znaleźć później za pomocą wyszukiwania. Po prostu napisałem kilka dodatkowych słów na wypadek, gdyby to pomogło. @ pst –