在Javascript

时间:2015-08-11 13:35:37

标签: javascript function parameters return-value

我正在创建类,并且必须在传递到外部库函数时修改所有参数。例如:

myFunc(x, y, width, height) {
   someFunc(x * zoom.x, y * zoom.y);
   anotherFunc(x * zoom.x, y * zoom.y, width * zoom.x, height * zoom.y);
}

为了做到这一点,我试着找到一种方法来更容易地传递这个参数,比如创建函数:

minimize(x, y) {
   return [x * zoom.x, y * zoom.y];
}

然后像这样使用它:

myFunc(x, y, width, height) {
   someFunc(minimize(x, y));
   anotherFunc(minimize(x, y), minimize(width, height));
}

即最小化函数将返回“x * zoom.x,y * zoom.y”,将其放在其他函数的参数中。我想知道它是否可以用这种或类似的方式完成

更新:由于Javascript现在有扩展运算符,它可以像

一样完成
myFunc(x, y, width, height) {
   someFunc(...minimize(x, y));
   anotherFunc(...minimize(x, y), ...minimize(width, height));
}

2 个答案:

答案 0 :(得分:1)

您的问题不是很明确,但我想您正在寻找apply



someFunc = function(x, y) {
  document.write("in someFunc: " + [x,y] + "<br>");
}

anotherFunc = function(x, y, width, height) {
  document.write("in someFunc: " + [x,y,width,height] + "<br>");
}
  
minimize = function(x, y) {
  return [x * 100, y * 200];
}

myFunc = function(x, y, width, height) {
   someFunc.apply(this, minimize(x, y));
   anotherFunc.apply(this, minimize(x, y).concat(minimize(width, height)));
}

myFunc(3, 4, 5, 6)
&#13;
&#13;
&#13;

最后一次电话不是特别优雅,为了使它看起来像你的例子,我们需要一个辅助功能:

Function.prototype.applyConc = function(thisArg) {
    return this.apply(thisArg, [].concat.apply([], arguments).slice(1))
}

然后:

anotherFunc.applyConc(this, minimize(x, y), minimize(width, height));

答案 1 :(得分:0)

将一个函数的结果赋给变量,然后将此变量作为参数传递给另一个函数。

var args = minimize(x,y);
someFunc(args);

希望这有帮助