jQuery Prototyp- und Konstruktorfunktionskette

8

Wie würde jQuery seinem Konstruktor erlauben, als eine Funktion zu fungieren, die Argumente akzeptiert, während sein Konstruktor auch als eine Funktion fungiert, die Argumente akzeptiert?

Ich bin ein wenig neu in JavaScript, also entschuldige mich, wenn das eine Frage ohne Frage ist (ich habe mir die Quelle angesehen, aber es ist schwer zu sezieren).

Wie auch immer, als Beispiel $(document).ready(<args>); Sowohl der Konstruktor $() als auch der Prototyp ready() fungieren als Funktion. Wie? Denn wenn ich das versuche:

%Vor%

Ich bekomme einen Fehler Uncaught TypeError: Objekt [Objekt global] hat keine Methode 'bereit'

    
Jace Cotton 09.03.2013, 04:44
quelle

2 Antworten

2

Es ist eine Programmiertechnik namens Funktionskette.

Sie können mehr darüber hier sehen: Wie funktioniert das grundlegend? Objekt / Funktion Verkettung von Arbeit in Javascript?

    
roydukkey 09.03.2013, 05:03
quelle
8

Weißt du, das hat mich ziemlich fasziniert. Du hast bereits eine Antwort angenommen, aber lass mich einfach meine veröffentlichen, falls es sich als nützlich erweist. Es gibt eine Geige, die hier erstellt wurde

%Vor%

Lassen Sie mich versuchen zu erklären, wie das funktioniert.

Jedes Mal, wenn Sie etwas wie $(selector) aufrufen, wird eine neue jQuery-Instanz mit den von Ihnen bereitgestellten Optionen erstellt (siehe return new jQuery.fn.init( selector, context ); );

Der Einfachheit halber stellen wir den jQuery-Prototyp als ein weiteres globales namens jQuery.fn zur Verfügung. Um es wirklich verkettbar zu machen, muss die init -Funktion eine neue jQuery -Instanz zurückgeben. Aus diesem Grund definieren wir am Ende explizit, dass die Prototypen für jQuery und jQuery.init identisch sind. Auf diese Weise können Sie Funktionsaufrufe wie

verketten %Vor%

Hoffe, das hilft.

Sie können die jQuery-Quelle auch auf github finden. Es ist modular und sehr einfach zu folgen.

    
Jibi Abraham 09.03.2013 05:35
quelle