我正在创建类,并且必须在传递到外部库函数时修改所有参数。例如:
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));
}
答案 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;
最后一次电话不是特别优雅,为了使它看起来像你的例子,我们需要一个辅助功能:
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);
希望这有帮助