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()
?
Ich stelle diese Frage, weil es für mich aussieht, dass divs
ein jQuery Objekt ist, kein echtes JavaScript Array
Objekt.
Wie funktioniert das?
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.
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.
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. Ссылка
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
.
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 ().
Tags und Links javascript jquery