2010-10-06 17 views
7

meine Frage ist wann sollte ich $ .Extend (...) verwenden?
In vielen jquery Plugins i sehen, dass die jquery-Objekt selbst mit neuen (global) Funktionen erweitert:

$.extend({ 
    doSth: function() { 
     alert('do sth here'); 
    } 
} 

Was die Vorteile der Erweiterung des jquery-Objekt anstelle des Erzeugens eines globalen Objekts enthält, um die Funktion sind:

var myLib = { 
    doSth: function() { 
     alert('do sth here'); 
    } 
} 

Derzeit entwickle ich eine kleine js-lib. In dieser lib ist das $ .fn-Objekt erweitert und ich brauche einige globale Funktionen.
Aber ich weiß nicht, wo ich die globalen Funktionen platzieren soll: in meinem eigenen lib-Objekt oder im jquery-Objekt?

Mit besten Grüßen,
Biggie

Antwort

3

etwas Kontext geben, da es von der Frage nicht ganz klar ist: Für diejenigen nicht bewusst, $.extend() mit einem einzigen Parameter erweitert das jQuery Objekt.


Oft gibt es keine Notwendigkeit dafür, es sei denn, Sie etwas Zugabe sehr Bibliothek verwandt, ich habe es in Ihrem eigenen Namensraum halten würde. Es dient keinem Zweck unter $ und die einzige mögliche Sache, die passieren kann, ist ein möglicher Namenskonflikt später mit neuen jQuery-Kernupdates.

Wenn Sie eine oder zwei statische Methoden, die mit einem Plugin gehen, wo Sie beide $.fn sind erstreckt und$ dann würde ich es als akzeptabel, aber wenn Sie viele Methoden haben (was klingt wie der Fall) Es gibt keinen wirklichen Vorteil für sie auf $.

Ehrlich gesagt der Grund, warum die einzelnen Argument Versionen vorhanden ist (oder, genauer gesagt, wurde in erster Linie hinzugefügt) ist für jQuery selbst, für den internen Gebrauch (so ziemlich jeder „Abschnitt“ verwendet es, check it out, here, here und here als Beispiele), ich bin mir nicht sicher, dass externe Verwendungen jemals intendiert wurden, sie ließen es einfach offen/erweiterbar dafür.

+0

"der Grund für die Existenz der einzelnen Argumentversionen ist für jQuery selbst" - und auch für Plugins. – lonesomeday

+0

@lonesomeday - Nicht wirklich, der Grund, warum es * hinzugefügt * wurde, war für jQuery, obwohl Plugins * es benutzen können, die meisten Plugins erweitern 'jQuery.fn', * nicht * jQuery, Plugins * brauchen * ihre statische Funktionen auf dem jQuery-Objekt, sie müssen jedoch * in $ .fn' sein, um in Ketten verwendet zu werden. –

+0

Sorry, war mir selbst voraus. – lonesomeday

Verwandte Themen