如何在Javascript中设置默认模块参数

时间:2017-01-15 17:37:39

标签: javascript jquery object module

所以我尝试使用纯javascript编写我的第一个库模块,除了我只是遇到麻烦并需要一些帮助。

我使用Revealing模块模式因为它的整洁。在我的模块中,我在这样的对象中有我的默认参数。

var defaults = {
   name : 'John Doe',
   age : 'Unspecified,
   height : '5feet'
};

这很好用,但我有一个init函数,用户可以使用这些键传递一个对象。 e.g

Module.init({

     name : 'james',
     age : 12
});

现在在我的代码中,我尝试编写一个函数,它返回每个键的值,比较默认值和初始值。如果键/值存在初始化,则应该返回它,否则使用默认值。我知道自己想要什么,但还不知道如何检查对象键。

function getValues (defaultObject, initObject){

   //scans the keys and returns the values

}

所以在代码中我可以做像

这样的事情
var options = getValues(defaultObject, initObject);
var name = options.name;

这意味着如果指定名称将是james,否则将是john doe。同样对于高度,因为我没有设置值,我也得到默认值

先谢谢你们。

2 个答案:

答案 0 :(得分:0)

比较两个对象键需要做什么,如果新对象有一个键,则替换旧对象中的值。这是一个例子:

function getValues(defaultObject, initObject) {
  for (var key in initObject) {
    if (initObject.hasOwnProperty(key)) {
      defaultObject[key] = initObject[key];
    }
  }

  return defaults;
}

我希望这对你有所帮助。

答案 1 :(得分:0)

在另一个主题中查看我的答案 better define function optional default params : https://stackoverflow.com/a/52082835/1422407

它可以帮助您重新定义函数签名,从而减少函数本身的无用逻辑。