所以我尝试使用纯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。同样对于高度,因为我没有设置值,我也得到默认值
先谢谢你们。
答案 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
它可以帮助您重新定义函数签名,从而减少函数本身的无用逻辑。