Dies ist einer der Code-Schnipsel, die ich aus dem Buch von Addy Osmani bekam, und konnte nicht verstehen, wie es funktioniert?Wie funktioniert das Code-Snippet (Modulmuster) (Addy Osmani)?
Antwort
Der Code aus dem Buch ist ein Modullader, mit dem Sie Bibliotheksfunktionen in einem definierten Variablennamespace speichern können. Die library
-Funktion nimmt ein Modul (das ein Objekt sein muss) und prüft, ob es eine init-Eigenschaft hat, ruft die init-Methode auf (um alle erforderlichen Teile der Bibliothek zu initialisieren) und gibt dann das initialisierte Modul zurück an den Anrufer.
Der zweite Teil des Codes, von dem Sie glauben, dass er verwechselt wird, verwendet eine anonyme Funktion, um ein Dummy-Modul an die Bibliotheksfunktion zu übergeben. Der Code:
var myLibrary = library(function() {
return {
init: function() {
// module implementation
}
};
}());
ist die gleiche wie wie etwas mit:
var someModule = {
init : function() {
// module implementation
}
}
var myLibrary = library(someModule)
Hier passieren wir die someModule
Objekt-Bibliothek(), die die gleiche wie was geschieht im Stand der Code-Schnipsel ist jedoch Im vorherigen Code-Block führen wir eine anonyme Funktion aus, die das Modul-Objekt kapselt, so dass wir keine zusätzlichen temporären lokalen Variablen erstellen müssen.
Wenn Sie noch etwas Klärung benötigen, fragen Sie bitte
Was macht diese Codezeile? $ (function() { ....... }); – user3516328
Es handelt sich um einen Codeblock, der ausgeführt wird, sobald dom bereit ist. Sobald die Bibliotheksfunktion aufgerufen wird und dom bereit ist, wird der Block ausgeführt – Alex
Sie müssen viel spezifischer sein. Was verstehst du nicht? –
Es fügt nur die init() -Methode der lib hinzu, die Sie in das Ereignis "jquery's ready" übergeben. – dandavis
Ich wusste eigentlich nicht, wie das Ganze funktioniert? – user3516328