Wie würde jQuery seinen Konstruktor erlauben, als eine Funktion zu fungieren, die Argumente akzeptiert, während sein Konstruktor auch als eine Funktion fungiert, die Argumente annimmt?jQuery Prototyp und Konstruktor Funktion Verkettung
Ich bin ein wenig neu in JavaScript, also entschuldigen Sie, wenn dies eine noob Frage ist, (Ich habe die Quelle angeschaut, aber es ist schwer zu sezieren).
Wie auch immer, als Beispiel $(document).ready(<args>);
Sowohl der Konstruktor $()
und der Prototyp ready()
Akt als eine Funktion. Wie? Denn wenn ich dies 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!") });
ich einen Fehler Uncaught Typeerror erhalten: Object [global Objekt] hat keine Methode 'ready'
Sie verketten die Methoden nicht, indem Sie 'this' von' ready' zurückgeben. –
Ich weiß, warum Sie die Fehlermeldung erhalten. Das $ (Dokument) gibt nur das HTMLDocument zurück, das keine .ready Funktion hat. Wenn $ eine "Element" -Eigenschaft hat, die das Dokumentelement beim Ausführen des Konstruktors speichert, dann könnten Sie den Bereit-Status überprüfen, indem Sie auf das gespeicherte Element in der Ready-Funktion zugreifen. – MattDiamant
@MattDiamant Ahh ... Ich denke, ich werde diesen Kommentar noch ein paar Mal für das Studium lesen. Lol. Aber ich denke ich verstehe. Vielen Dank. –