Heute ist meine einzige dringende Frage zu jQuery die nach dem richtigen Zeitpunkt für die Verwendung von jQuery.extend()
und, jQuery.fn
(der für Plug-ins verwendet wird). Basil Goldman scheint eine Erklärung zu haben in " Eigene Funktionen in jQuery definieren ", aber aus irgendeinem Grund bin ich immer noch nicht überzeugt, dass ich die besten Informationen habe. Sobald wir mit der Arbeit beginnen jQuery.fn
müssen wir überlegen, ob wir nicht einfach ein vollwertiges Plug-in entwickeln sollten. Dies impliziert drei Aspekte: Erweiterung, Hinzufügen einer neuen Funktion und Erstellung eines Plug-ins. Es sollte eine Erklärung geben, die alle drei Punkte zusammenfasst. Ist dies eine Erklärung wert und haben wir eine?
Antwort
Zu viele Anzeigen?Ich glaube, du denkst vielleicht zu viel nach :)
Im jQuery-Quelltext wird extend() einmal definiert und in beiden Namespaces verwendet:
jQuery.extend = jQuery.fn.extend = function() { .. };
Technisch gesehen ist alles, was diese Funktion tut, die Zusammenführung von Objekteigenschaften.
Im einfachsten Fall verschmelzen Sie einfach zwei Objekte zu einem einzigen Objekt (ähnlich wie Optionsparameter in Plugins):
this.options = $.extend({}, defaultOptions, userOptions); // Just mergin' objects
Die extend-Funktion für den einfachen $||jQuery-Namensraum fügt diese Funktion lediglich als statische Funktion in den jquery-Namensraum ein. Funktionen, die in den jQuery-Namensraum aufgenommen werden, sind in der Regel solche, die kein Element benötigen, um zu funktionieren. Dies sind Funktionen wie isArray() und isFunction() zusammen mit einer Reihe weiterer.
var noWhiteSpace = $.trim(string); // No element needed
jQuery.fn ist mehr oder weniger für Funktionen reserviert, die auf der Grundlage der Elemente, die an das jquery-Objekt übergeben werden, Aktionen ausführen. Diese sind wie normale Plugins, und die meisten Dinge, die Sie in jQuery gewohnt sind.
$('div').css('border', '1px solid green'); // Do work on a set of elements
Noch interessanter wird es, wenn Sie sich die Funktion $.data() im jQuery-Quelltext ansehen. Sie ist in beiden Namespaces definiert. Sie wird zunächst im $-Namensraum definiert und nimmt ein Element als ersten Parameter an. Später wird sie auf $.fn erweitert und ruft einfach die erste Funktion auf, wobei der erste Parameter als "this" festgelegt wird.
Ich hoffe, das ist, wonach Sie suchen!