3

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

1 回答 1

4

没有太大区别,这实际上与您可读的内容有关。我个人喜欢第二种方法,因为它将默认值与逻辑分开。

于 2012-04-10T16:24:14.807 回答