jQuery Prototypen und Konstruktor-Funktion der Verkettung
Würden wie jQuery ermöglichen den Konstruktor als Funktion akzeptieren Argumente inzwischen seinen Konstruktor dient auch als eine Funktion annehmen Argumente?
Bin ich ein bisschen mit JavaScript, also entschuldigen Sie mich, wenn dies ist eine noob Frage, (ich habe mir die Quelle, aber es ist schwer zu versuchen, Sie zu sezieren).
Sowieso, wie ein Beispiel $(document).ready(<args>);
Sowohl der Konstruktor $()
und der Prototyp ready()
handeln als eine Funktion. Wie? Denn wenn ich es versuchen:
var $ = function( selector ) {
if(selector == document) {
return document;
}
};
$.prototype = {
constructor: $,
ready: function( args ) {
if( isDomReady ) {
args.apply( document );
} else {
window.onload = args;
}
}
};
var isDomReady = ( document.addEventListener || document.readyState == ("complete"|"loaded"|true|4) || document.onreadystatechange() ) ? true : false;
$(document).ready(function() { alert("Wibbles!") });
Bekomme ich die Fehlermeldung: Uncaught TypeError: Object[object global] has no method 'fertig'
- Du bist nicht die Verkettung der Methoden durch Rücksendung
this
ausready
. - Ich weiß, warum du bist immer die Fehlermeldung. $(Document) nur die Rückgabe der HTMLDocument, die nicht über ein .ready Funktion. Wenn $ hatte ein "element" - Eigenschaft, die das Dokument abgelegt element beim ausführen des Konstruktors, dann könnte man überprüfen, ist es bereit-Zustand durch den Zugriff auf die gespeicherten element in der ready-Funktion.
- Ahh... ich denke, ich werde wieder Lesen, dass der Kommentar ein paar mal, um zu studieren. Lol. Aber ich glaube, ich verstehe. Danke.
- Grundsätzlich sind alle Methoden das Objekt zurückgegeben, das Sie genannt wurden, aus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine Programmier-Technik genannt-Funktion aufweist.
Können Sie sehen, mehr dazu hier: Wie funktioniert basic-Objekt/Funktion verketten arbeiten in javascript?
Weißt du, das fasziniert mich. Sie habe angenommen, die Antwort bereits, aber lassen Sie mich nur post-mine in dem Fall, dass es nützlich erweist. Es ist ein fiddle erstellt, hier
Lassen Sie mich versuchen zu erklären, wie das funktioniert.
Jedes mal, wenn Sie rufen so etwas wie
$(selector)
eine neue jQuery-Instanz erstellt, mit den Optionen, die Sie zur Verfügung gestellt haben (siehereturn new jQuery.fn.init( selector, context );
);Der Einfachheit halber setzen wir das jQuery-Prototyp als andere globalen Namen,
jQuery.fn
. Um es wirklich verkettbare, dieinit
Funktion muss wieder eine neuejQuery
Instanz. Das ist der Grund, warum wir am Ende explizit zu definieren, dass die Prototypen für beidejQuery
undjQuery.init
sind die gleichen. Auf diese Weise können Sie nun die chain-Funktion Aufrufe, wieHoffe, das hilft.
Außerdem finden Sie die jQuery-Quelle auf github. Es ist modular aufgebaut und Recht einfach zu befolgen.