【问题标题】:Insert function's return into another function's parameters in Javascript在Javascript中将函数的返回值插入另一个函数的参数中
【发布时间】:2015-08-11 13:35:37
【问题描述】:

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

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

【问题讨论】:

  • “我想知道是否可以通过这种或类似的方式完成”:你真的尝试过吗?结果如何?找出答案的最好方法是做。
  • 我尝试仅通过数组和对象创建最小化返回,我只是没有任何其他想法。

标签: javascript function parameters return-value


【解决方案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)

最后一个调用不是特别优雅,为了让它看起来像你的例子,我们需要一个辅助函数:

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

然后:

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

【讨论】:

    【解决方案2】:

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

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-15
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2019-10-11
      相关资源
      最近更新 更多