Mit der Entwicklung der Zeit sind im JavaScript-Lager immer mehr hervorragende Frameworks aufgetaucht, was unsere Entwicklungsarbeit erheblich vereinfacht. Sollten wir bei der Verwendung dieser Frameworks auch über ihre Herkunft nachdenken und darüber nachdenken, wie sie aufgebaut sind? Wenn Sie sich nicht damit zufrieden geben, nur einige vorgefertigte APIs zu verwenden, sondern über ein tiefes Verständnis ihrer internen Implementierungsmechanismen verfügen (jemandem zufolge sind APIs die am schnellsten abwertenden Dinge), ist es der beste Weg, ihren Quellcode zu lesen dass du es lesen kannst.
Ich habe in den letzten zwei Tagen den Quellcode von jQuery studiert und werde hier einige meiner oberflächlichen Kenntnisse teilen. Bitte korrigieren Sie mich, wenn ich unangemessen bin. Okay, werfen wir einen Blick auf die Funktionsweise von jQuery. Ich gehe davon aus, dass Sie bereits über einige Grundkenntnisse in JavaScript verfügen. Wenn die Grundlagen nicht ausreichen, empfehle ich Ihnen, die beiden Bücher „JavaScript Advanced Programming“ und „Understanding JavaScript“ zu lesen. Dieser Artikel ist nicht für Freunde geeignet, die Konzepte wie Klassen, Objekte, Funktionen, Prototypen usw. in js nicht verstehen.
Fangen wir ganz von vorne an:
Konstruieren Sie zunächst ein Objekt für den Benutzer, vorausgesetzt, unser Framework heißt Shaka (mein Name ;)).
var Shaka = function(){}; Hier erstellen wir eine leere Funktion ohne Inhalt. Diese Funktion ist eigentlich unser Konstruktor. Damit das von uns generierte Objekt die im Prototyp definierten Methoden aufrufen kann, müssen wir mithilfe des Prototyps einige Methoden zu Shaka hinzufügen (stellen Sie sich Shaka als eine Klasse vor), also definieren wir:
Shaka.fn = Shaka.prototype = {};
Shaka.fn entspricht hier dem Alias von Shaka.prototype für die zukünftige Verwendung. Sie verweisen auf dieselbe Referenz.
OK, fügen wir eine sayHello-Methode und einen Parameter zu Shaka hinzu, damit das grundlegendste Erscheinungsbild dieses Frameworks bereits vorhanden ist. Wenn es aktiv ist, ist es jetzt 1 Jahr alt.
Codefeld ausführen