【问题标题】:JavaScript module pattern: default valuesJavaScript 模块模式:默认值
【发布时间】:2012-04-10 16:17:55
【问题描述】:

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

【问题讨论】:

  • 第二个示例遵循最佳实践,初始化您的成员,然后如果配置中未提供任何内容,则使用其默认值作为默认值。
  • 如果默认参数可以包含复杂对象作为子参数,则第二种变体也更好。

标签: javascript module design-patterns


【解决方案1】:

没有太大的区别,真正重要的是您可以阅读的内容。我个人喜欢第二种方法,因为它将默认值与逻辑分开。

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多