JavaScript模块模式:默认值

时间:2012-04-10 16:17:56

标签: javascript module design-patterns

我正在开发一个项目,我们使用模式来定义"模块" (即有效的公共静态类),其中每个模块都有一个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;
})();

1 个答案:

答案 0 :(得分:4)

没有什么区别,它真的是关于什么是可读的。我个人喜欢第二种方法,因为它将默认值与逻辑分开。