Kernpunkte
apply()
für die Bindung zusätzlicher Module in einen einzigen Kontext und damit zur Aufrechterhaltung der Unabhängigkeit und der Verwaltungsfähigkeit des Moduls. In diesem Artikel wird die Struktur und die Vorteile des Entwurfsmusters des Erweiterungsmoduls erläutert, das vier Hauptmitglied -Typen enthält:
modulares Entwurfsmuster
Hier wird als grundlegendes Designmuster verwendet, bei dem es sich um eine Variante des klassischen Modulmusters handelt, jedoch mit mehr Kontrolle. Obwohl einige Artikel diese Muster beschrieben haben, erklären nur wenige wirklich, wie sie funktionieren, und nur wenige haben ein so komplettes Feature -Set!
Grundmodulmodus
Klassisches Modulmuster wickelt den gesamten Code des Skripts in eine anonyme Funktion wörtlich, die bei der Rückgabe einer einzelnen Variablen zugeordnet ist. Eine Funktionsbuchstätigkeit ist nur eine Funktion, die sich selbst aufruft, daher ist die endgültige Zuordnung einer Funktion wörtlich keine Funktion, sondern jeder Wert, der von der Funktion zurückgegeben wird. Um ein einfaches Beispiel zu geben, enthält die Funktion wörtlich eine Berechnung, so dass der Wert der Summe das Ergebnis dieser Berechnung ist:
var sum = (function() { return 6 * 7; })();
Um die Bedeutung dieser Syntax zu veranschaulichen, ist Folgendes derselbe Code, der in eine benannte Funktion abstrahiert wird:
function calculate() { return 6 * 7; } var sum = (calculate)();
In diesem Fall müssen wir keine Klammern um calculate
umsetzen, aber wenn wir anonyme Funktionen verwenden, müssen wir dies tun, um ihn als einzelne Ausdruck ohne Voraussetzung zu bewerten.
öffentliche und private Mitglieder
In Funktionsliteralen können wir also jeden anderen Code - wie Variablen, Eigenschaften und Funktionen - und die verschiedenen Arten von Syntax, die zur Definition interner Daten verwendet werden, die öffentlichen Mitglieder und die Teilung zwischen privaten Mitgliedern bestimmen. Hier ist ein Beispiel:
Da wir ein Attributobjekt zurückgeben und das Objektvar MyModule = (function() { var myPrivateData = 303; function myPrivateFunction() { alert('private'); } return { myPublicData : 42, myPublicFunction : function() { alert('public'); } }; })();
und MyModule
. Wir können jedoch einfach nicht auf MyModule.myPublicData
oder MyModule.myPublicFunction
zugreifen, da in ihrem ursprünglichen Bereich nur auf Variablen zugegriffen werden können. Der Umfang einer Variablen besteht darin, ihren Kontext zu definieren, der durch die myPrivateData
-Anweisung bestimmt wird. In diesem Beispiel ist der Umfang privater Variablen myPrivateFunction
Objekte, sodass nur innerhalb dieses Objekts aus zugegriffen werden kann. var
MyModule
Verwenden des Modulmodus verwenden wir zwei verschiedene Syntaxe, um den Unterschied zwischen öffentlichen und privaten Mitgliedern zu erzeugen. Das Erkennen des Modulmusters ist eine Variante dieses Musters, die es uns ermöglicht, dieselbe Syntax für alle internen Konstrukte zu verwenden, wodurch nur die Literalbeschreibung am Ende aufgeschoben wird, um öffentliche Mitglieder zurückzugeben (oder zu enthüllen). Schauen wir uns dieses Objekt noch einmal an, aber diesmal mithilfe des Modulmodus von DENCE:
Die Aufteilung zwischen öffentlichen und privaten Mitgliedern ist immer noch gleich, aber diesmal wird sie nicht von der ursprünglichen Syntax implementiert, mit der diese Mitglieder definiert werden, sondern einfach durch den zurückgegebenen Inhalt. Dadurch wird das Aufdecken des Modulmusters zu einer nützlichen Variante, da es die Verwendung intern konsistenter Codierungsstile ermöglicht. Dies bedeutet auch, dass Sie bei der Rückkehr den Namen des öffentlichen Mitglieds ändern und sogar die Mitglieder jederzeit ändern können.
var MyModule = (function() { var myPrivateData = 303; function myPrivateFunction() { alert('private'); } var myPublicData = 42; function myPublicFunction() { alert('public'); } return { myPublicData : myPublicData, myPublicFunction : myPublicFunction }; })();
(Der folgende Inhalt wird aufgrund der Länge des Artikels in Segmenten ausgegeben)
Das obige ist der detaillierte Inhalt vonModulare Entwurfsmuster in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!