JavaScript模块模式:默认值
我正在从事一个项目,在这个项目中,我们使用一种模式来定义“模块”(即有效的公共静态类),其中每个模块都有一个JavaScript模块模式:默认值,javascript,module,design-patterns,Javascript,Module,Design Patterns,我正在从事一个项目,在这个项目中,我们使用一种模式来定义“模块”(即有效的公共静态类),其中每个模块都有一个init(),一旦定义了模块就应该调用它。它看起来像: MyNamespace.MyModule = (function () { var my = {}; my.init = function(config) { // setup initial state using config }; return my; })(); 我在这个代码库
init()
,一旦定义了模块就应该调用它。它看起来像:
MyNamespace.MyModule = (function () {
var my = {};
my.init = function(config) {
// setup initial state using config
};
return my;
})();
我在这个代码库中看到了两种用于定义config
默认值的模式,并想知道如果有我没有立即看到的优点或缺点,哪种模式可能更好。推荐
以下是第一点:
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;
})();
这是第二点:
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;
})();
没有太大的区别,其实都是关于你能读到什么。我个人喜欢第二种方法,因为它将默认值与逻辑分离。第二个示例遵循最佳实践,初始化成员,然后在配置中未提供任何内容的情况下使用其默认值作为默认值。如果默认参数可以包含复杂对象作为子参数,则第二种方法也会更好。