我正在尝试遵循规则,并避免重复相同的代码。

我有这个单一功能,但是根据输入,我希望它返回一个对象数组或一个对象(而不是仅一个对象的数组)

例如(实际功能比这明显更长,更复杂,显然,经过更长的计算后最后几行)

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;
}

09-30 13:32