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:
Ich bekomme einen Fehler Uncaught TypeError: Objekt [Objekt global] hat keine Methode 'bereit'
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?
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
Hoffe, das hilft.
Sie können die jQuery-Quelle auch auf github finden. Es ist modular und sehr einfach zu folgen.
Tags und Links javascript jquery object prototype