Ich arbeite an einem Projekt, wo wir ein Muster verwenden, um "Module" (dh effektiv öffentliche statische Klassen) zu definieren, wobei jedes Modul eine init()
hat, die aufgerufen werden soll, sobald das Modul definiert wurde . Es sieht aus wie:JavaScript-Modul Muster: Standardwerte
MyNamespace.MyModule = (function() {
var my = {};
my.init = function(config) {
// setup initial state using config
};
return my;
})();
ich zwei Muster in diesem Code-Basis zu sehen config
Standardwerte zu definieren und sich fragen, was man vielleicht — besser, wenn es irgendeinen Vorteil oder Nachteil, dass ich nicht sofort zu sehen. Empfehlungen?
Hier ist der erste:
MyNamespace.MyModule = (function() {
var my = {},
username,
policyId,
displayRows;
my.init = function(config) {
config = config || {};
username = config.username || 'Anonymous';
policyId = config.policyId || null;
displayRows = config.displayRows || 50;
};
return my;
})();
Und hier ist das zweite:
MyNamespace.MyModule = (function() {
var my = {},
username = 'Anonymous',
policyId = null,
displayRows = 50;
my.init = function(config) {
config = config || {};
username = config.username || username;
policyId = config.policyId || policyId;
displayRows = config.displayRows || displayRows;
};
return my;
})();
Das zweite Beispiel folgt Best Practices, indem Sie Ihre Mitglieder initialisieren und dann ihre Standardwerte als Standardwerte verwenden, wenn in der Konfiguration nichts angegeben ist. – Maess
Die zweite Variante ist auch besser, wenn Standardparameter komplexe Objekte als Subparameter enthalten können. –