JavaScript模块模式:默认值
问题描述:
我正在使用模式来定义“模块”(即有效的公共静态类)的项目,其中每个模块都有一个init()
,应在模块定义完成后调用它。它看起来像:JavaScript模块模式:默认值
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;
})();
答
没有多大的差别,它的真正意义是什么可读的给你。我个人喜欢第二种方法,因为它将默认值与逻辑分开。
第二个示例通过初始化您的成员,然后使用它们的默认值作为默认值(如果配置中未提供任何内容)来遵循最佳做法。 – Maess 2012-04-10 16:21:59
如果默认参数可以包含复杂对象作为子参数,则第二种变体也更好。 – 2012-04-10 16:23:51