这是一个类似于我的情况的示例代码:
var customProcessor = function test1(arga, argb, argc, argd) {
console.log('customProcessor', 'arga', arga);
console.log('customProcessor', 'argb', argb);
console.log('customProcessor', 'argc', argc);
console.log('customProcessor', 'argd', argd);
};
var utilityMethod = function test2(arga, argb, someFunc, cbArgs) {
console.log('utilityMethod', 'arga', arga);
console.log('utilityMethod', 'argb', argb);
cbArgs.unshift(argb);
cbArgs.unshift(arga);
someFunc.apply(this, cbArgs); // INTENT: someFunc(arga, argb, argc, argd);
};
utilityMethod('argA', 'argB', customProcessor, ['argC','argD']);
上面的代码设法将所有4个必需参数传递给我的customProcessor
方法,但以下几行在意图方面不是最易读的:
cbArgs.unshift(argb);
cbArgs.unshift(arga);
someFunc.apply(this, cbArgs); // INTENT: someFunc(arga, argb, argc, argd);
有没有办法以更加不言自明的方式编写它们...使用我可能不知道的JS语法?
在这里,我想象的更具可读性:
// not real code
someFunc.apply(this, [arga, argb, cbArgs]);
但是我需要知道是否有一个真实的JS语法来完成这个?
答案 0 :(得分:2)
[arga, argb, ...cbArgs]
请注意,这也直接适用于函数调用,替换apply
(如果您不需要明确的this
),例如someFunc(arga, argb, ...cbArgs)
答案 1 :(得分:1)
function customProcessor(a, b, c, d) {
console.log('customProcessor:', a, b, c, d);
};
function utilityMethod(arga, argb, someFunc, cbArgs) {
console.log('utilityMethod :', arga, argb);
someFunc(arga, argb, cbArgs[0], cbArgs[1]);
// or
someFunc.apply(this, [arga, argb].concat(cbArgs));
};
utilityMethod('argA', 'argB', customProcessor, ['argC','argD']);