我正在收听一系列事件(不是DOM事件),还有一个包含事件处理函数的对象。
通常我会做类似
的事情 whenEventOccurs('event-name', handler.eventName)
除了我必须将参数传递给为每个事件监听器更改的处理程序。
我正在寻找像Function.prototype.bind()
这样的东西,它没有设置this
但是如果可能的话设置第一个参数。
如果没有干净的解决方案,我可以随时执行以下操作,但如果可能的话,我想避免使用它:
whenEventOccurs('event-name', function(foo, bar, baz){
handler.eventName(specialParam, foo, bar, baz);
});
答案 0 :(得分:2)
您可以将其封装在与bind()
function bindArg1(func, arg1) {
return function() {
var args = [].slice.call(arguments);
args.unshift(arg1);
return func.apply(this, args);
}
}
whenEventOccurs('event-name', bindArg1(handler.eventName, specialParam))