Diese Konvention wird beim Schreiben von Plugins verwendet, um sicherzustellen, dass kein Konflikt mit anderen Javascript-Bibliotheken besteht, die die $ -Notation verwenden, während sichergestellt wird, dass der Autor des Plugins diese Notation weiterhin verwenden kann:
%Vor%Der Autor deklariert eine anonyme Funktion mit einem einzelnen Parameter ($), ruft sie dann sofort auf und übergibt ihm das jQuery-Objekt. Dies stellt sicher, dass die Funktion aufgerufen wird und dass alles darin definiert ist.
Eine längere Schreibweise könnte sein:
%Vor% Dies würde jedoch eine Variable MyDefs
im globalen Namespace erzeugen. Das anonyme Funktionsmuster lässt den globalen Namespace leer und vermeidet Konflikte.
Er deklariert die Funktion columnize
als ein jQuery-Plugin, das es Ihnen ermöglicht, Elemente wie dieses $('.someSelector').columnize()
zu verwenden. Sie können mehr über das Plugin-Authoring hier lesen.
Ich habe das gerade gefunden ... ist es ein Proxy-Muster?
Proxy-Muster
Die Kombination des obigen Wissens gibt Ihnen als JavaScript-Entwickler ziemlich viel Power. Eine Möglichkeit, dies zu kombinieren, besteht darin, ein Proxy-Muster in JavaScript zu implementieren, das die Grundlagen der aspektorientierten Programmierung (AOP) ermöglicht:
%Vor%Der obige Code umschließt den Code in einer Funktion, um die "proxied" -Variable zu verbergen. Es speichert jQuerys setArray-Methode in einem Closure und überschreibt es. Der Proxy protokolliert dann alle Aufrufe der Methode und delegiert den Aufruf an das Original. Die Verwendung von apply (this, arguments) garantiert, dass der Aufrufer den Unterschied zwischen der ursprünglichen und der proxied-Methode nicht bemerken kann.
Verwechseln Sie nicht die $
. Tatsächlich ist $
ein gültiger Variablenname in JavaScript (wie alle Variablen, die $
enthalten, Quelle (PDF) ).
Also könnte die erste Zeile als
umformuliert werden %Vor%was vielleicht üblicher aussieht. Für den Rest, ja, es ist ein Proxy-Muster, und James Wiseman's Antwort erklärt, was los ist.
Tags und Links javascript jquery