我正在尝试遵循规则,并避免重复相同的代码。
我有这个单一功能,但是根据输入,我希望它返回一个对象数组或一个对象(而不是仅一个对象的数组)
例如(实际功能比这明显更长,更复杂,显然,经过更长的计算后最后几行)
function (nameParameter, ageParameter, inputType)
{
if (inputType === "asObject")
{
var x = {};
x.name = nameParameter;
x.age = ageParameter;
return x;
}
else if (inputType === "asArray")
{
var y = [];
y.push(nameParameter);
y.push(ageParameter);
return y;
}
};
这可能吗,如果是,那么这是一种好习惯吗?还有其他解决方法吗?
否则,我将不得不使用几乎完全相同的代码创建两个不同的函数。
最佳答案
不要这样实现一个版本,并添加一个包装函数,以转换您可能需要的另一种格式。这样,调用方始终获得一致的行为,并且仍然没有代码重复。
function asObject(nameParameter, ageParameter)
{
//Lots of work here.
var x = {};
x.name = nameParameter;
x.age = ageParameter;
return x;
};
function asArray(nameParameter, ageParameter)
{
//Just defer to the other version and repack its response.
var o = asObject(nameParameter, ageParameter);
var y = [o.nameParameter,o.ageParameter ];
return y;
}