我有一个看起来像这样的函数:
function f(requiredParamA, requiredParamB, optionalObjectParamA, optionalObjectParamB) {
optionalObjectParamA = optionalObjectParamA || {};
optionalObjectParamB = optionalObjectParamB || {};
// rest of the function
}
说我想使用f
的值来呼叫optionalObjectParamB
,而不是optionalObjectParamA
。我能做到这一点:
f("john", 100, null, {vegatarian: true});
但这会导致一个丑陋的API。 还有其他选择吗?我应该如何设计功能以及如何调用它?
答案 0 :(得分:4)
传递对象而不是参数。然后,您可以拥有无限的可选参数,而不会炸毁参数列表。
function f(requiredParamA, requiredParamB, context) {
var optional = context || {};
// handle optional.optionalObjectParamA..
// handle optional.optionalObjectParamB..
}