Wie erlaubt jQuery die Verwendung von [] in einem jQuery-Objekt?

8

Sagen Sie, ich hätte das folgende Markup:

%Vor%

Und ich verwende Folgendes, um sie abzurufen:

%Vor%

Wie ist es möglich, dass ich das entsprechende DOM-Element abrufen kann, indem ich die [] -Syntax und auch Methoden für das jQuery-Objekt aufrufen kann, z. B. .first() ?

%Vor%

Ich stelle diese Frage, weil es für mich aussieht, dass divs ein jQuery Objekt ist, kein echtes JavaScript Array Objekt.

Wie funktioniert das?

    
Jacob Relkin 11.02.2011, 18:00
quelle

5 Antworten

8

Die numerischen Indizes sind nur Eigenschaften des zurückgegebenen Objekts. Es ähnelt dem:

%Vor%

Arrays und Pseudo-Array-Objekte sind fast identisch - der einzige Unterschied besteht darin, dass die length -Eigenschaft eines echten Arrays automatisch von der JavaScript-Engine verwaltet wird.

    
casablanca 11.02.2011, 18:02
quelle
3

Sie können dies mit jedem Objekt machen. Es hat eigentlich nichts damit zu tun, dass es ein "Array-ähnliches" Objekt ist.

%Vor%

Hier ist ein Beispiel für das Erstellen eines Array-ähnlichen Objekts:

Beispiel: Ссылка

%Vor%

Es mag verlockend sein zu denken, dass sich die length -Eigenschaft genauso verhält wie in einem tatsächlichen Array, aber nicht.

Mit einem Array können Sie zum Beispiel length = 0 verwenden, um den Inhalt des Arrays zu löschen, aber in einem Objekt wie dem obigen funktioniert es nicht.

In der jQuery-Quelle steht hier "Array.prototype.push" referenziert, und hier wird es erweitert in den jQuery-Prototyp.

    
user113716 11.02.2011 18:13
quelle
2

Das würde die Dinge ein wenig aufklären. Probieren Sie es aus und spielen Sie damit.

%Vor%

Dies ist, wie Sie ein Pseudo-Array erstellen, eine riesige Bemerkung ist Arrays in Javascript kann nicht unterklassifiziert werden, dh kann nicht ein Unter-Array mit den gleichen Array-Funktionen erstellen, der Hauptgrund dafür ist das Verhalten der Length-Eigenschaft in einem Array, das vor dem JS-Programmierer verborgen ist, aber es gibt viele Hacks und Workarounds dafür, um mehr zu erfahren, lesen Sie diesen brillanten Artikel von Kangax. Ссылка

    
Amjad Masad 11.02.2011 18:21
quelle
0

In JavaScript können Sie auf Eigenschaften von Objekten mit derselben Syntax zugreifen, die für die Array-Index-Notation verwendet wird:

%Vor%

Sie können die Punktnotation jedoch nur für gültige Namen verwenden. o[0] funktioniert, aber o.0 nicht.

jQuery gibt ein jQuery.init -Objekt zurück, das eine Reihe von Eigenschaften enthält (zB length ), sowie eine Karte des dom elements oder anderer roher JavaScript-Objekte, die mit dem Selektor übereinstimmen, aufgelistet von 0 bis n .

    
zzzzBov 11.02.2011 18:13
quelle
0

Das Ergebnis eines Selektors ( $("div") im Startpost) gibt ein Ergebnis mit dem Typ Jquery

Um von der jquery-Seite zu zitieren:

  

Das jQuery-Objekt selbst verhält sich sehr   wie ein Array; es hat eine Länge   Eigentum und die Elemente in der   Objekt kann von ihren zugegriffen werden   numerische Indizes [0] bis [Länge-1].   Beachten Sie, dass ein jQuery-Objekt nicht vorhanden ist   eigentlich ein Javascript Array Objekt, also   es hat nicht alle Methoden eines   true Array-Objekt wie join ().

    
Julian 11.02.2011 18:30
quelle

Tags und Links