molily: jQuery 101

Beitrag lesen

Das ist vielleicht möglich und intern so realisiert, aber nicht in der Schnittstelle defieniert.

Es ist durchaus dokumentiert, bspw. in der offiziellen FAQ How do I pull a native DOM element from a jQuery object und wird auch in der von dir verlinkten get()-Beschreibung erwähnt.

Klar, der simple jquery[i]-Zugriff steht nicht in der Methodenreferenz, weil es keine Methode ist, sondern ein grundlegendes Objekt-Feature.

Daher kann es jederzeit geändert werden und sollte/darf auch so nicht verwendet werden. Allerdings ist get eine Schnittstellenfunktion. Diese gibt dieses Interna nach aussen und kann/sollte verwendet werden.

Das stimmt. Der Hinweis auf get() ist richtig und angebracht.

Trotzdem würde ich das realistischer sehen. Sämtlicher jQuery-Code, den ich kenne, basiert auf diesem grundlegenden Pattern: jQuery-Objekte sind Listen von DOM-Elementen. In vielen jQuery-Artikeln, auch seitens John Resig und dem jQuery-Team, wurde neben get() der []-Zugriff propagiert. Es ist natürlich möglich, dass das irgendwann geändert wird, aber diese jQuery-Version würde so ziemlich mit keinem existierenden jQuery-Script und -Plugin kompatibel sein.

jQuery verzichtet bewusst auf effektive Kapselung. Eine (Pseudo-)Kapselung findet sich beispielsweise bei Yahoo UI. Dort stecken die tatsächlichen DOM-Knoten bei NodeLists in einem (pseudo-)privaten Array namens _nodes. Das Facade-Pattern wird dort konsequenter durchgezogen.

Mathias