想象以下代码:
fruitMixer = function(fruitHandler, action){
// get the given arguments in fruitHandler
var args = fruitHandler.arguments;
// retrieve these arguments outside the fruitHandler function
if(args[0] == undefined) return;
var action = args[0]['action'];
// do something if it wants to mix
if(action == 'mix'){
fruitHandler(args);
}else{
// do other stuff
}
}
fruitMixer(function({
'action': 'mix',
'apples': 3,
'peaches': 5}
){
// mix the fruits
});
我正在尝试做的是获取给定匿名函数之外的参数。使用这些参数,您可以执行上述操作。
我知道这段代码不能简单地工作,因为不能在函数本身之外访问参数。但是我想知道是否还有其他方法或解决方法来做到这一点?
最佳答案
显而易见的事情是将处理程序与处理程序参数分开。
fruitMixer = function(fruitHandler, fruitHandlerArgs) {
//do stuff here
//call the handler, passing it its args
fruitHandler(fruitHandlerArgs);
}
fruitMixer(function() {
//mix the fruits
}, {
arg1: 'some val',
arg2: 'some other val'
});