JavaScript预设功能参数

时间:2016-12-22 07:58:17

标签: javascript partial-application

我正在收听一系列事件(不是DOM事件),还有一个包含事件处理函数的对象。

通常我会做类似

的事情

whenEventOccurs('event-name', handler.eventName)

除了我必须将参数传递给为每个事件监听器更改的处理程序。

我正在寻找像Function.prototype.bind()这样的东西,它没有设置this但是如果可能的话设置第一个参数。

如果没有干净的解决方案,我可以随时执行以下操作,但如果可能的话,我想避免使用它:

whenEventOccurs('event-name', function(foo, bar, baz){
    handler.eventName(specialParam, foo, bar, baz);
});

1 个答案:

答案 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))