Javascript 在调用包装器的同时给它一个要运行的函数,还有什么更优雅的方法呢
我有一个包装函数wrapperparam1、param2、param3、myfunc和myfunc,它被定义为myfuncparam1、param2、param3 我想在函数调用中调用myfunc上的包装器,函数调用将函数作为参数并使用参数调用它。现在,我的函数调用看起来像callerparam1,param2,param3=>wrapperparam1,param2,param3,myfunc 当然,在包装器中有一行myfuncparam1,param2,param3Javascript 在调用包装器的同时给它一个要运行的函数,还有什么更优雅的方法呢,javascript,function,ecmascript-6,lambda,Javascript,Function,Ecmascript 6,Lambda,我有一个包装函数wrapperparam1、param2、param3、myfunc和myfunc,它被定义为myfuncparam1、param2、param3 我想在函数调用中调用myfunc上的包装器,函数调用将函数作为参数并使用参数调用它。现在,我的函数调用看起来像callerparam1,param2,param3=>wrapperparam1,param2,param3,myfunc 当然,在包装器中有一行myfuncparam1,param2,param3 有没有办法重写这一切,使
有没有办法重写这一切,使函数调用更优雅?我希望能够在其他地方方便地调用wrapper,这些地方为它提供了前3个参数,并以某种方式为它提供了一个函数。为什么不切换参数,首先获取回调,然后获取参数呢
const wrapper = (fn, ...args) => () => fn(...args);
这种方法允许对参数进行任意计数
旧的标准方法是绑定函数,如
function wrapper(fn, ...args) {
return fn.bind(null, ...args);
}
我找到了一个好答案。我将包装器从wrapperparam1、param2、param3、myfunc更改为funcCallermyfunc、param1、param2、param3,并制作了另一个函数wrapper=func=>funcCaller.bindnull、func
我不明白为什么要这样订购。如果有人能解释一下为什么订单会这样翻转,我会很高兴的。问题是,我想在我的来电中去掉lambda。我希望有类似callerrapper.myfunc/callermyfunc.wrapper的东西,我需要重写wrapper以适应。值得注意的是,虽然我可以重写包装器和myfunc,但我宁愿保持myfunc的原样,调用方是一个我无法重写的库函数。当然,我使用占位符名称来抽象问题,因为我想学习ES6/javascript最通用的解决方案