在javascript中将值绑定到函数

时间:2015-10-12 22:15:31

标签: javascript bind

让我说我有这个功能:

function toy(input) {
    return input + 1;
}

我想基本上生成一个函数,通过将3绑定到输入来打印4。所以我可以调用类似fn()的东西,它会打印4。

所以我尝试了:

var fn = toy.bind(3);

然后当我执行fn()时,我没有得到4.

我是否需要使用'this'才能使这项工作/有没有办法在没有绑定的情况下执行此操作?

3 个答案:

答案 0 :(得分:5)

传递给.bind()的第一个参数用作被调用函数中的this。传递给被调用函数的第一个参数是传递给.bind() second 参数。您可以使用有意义的this绑定(如果有),或者如果函数忽略null则只使用this

var fn = toy.bind(null, 3);

答案 1 :(得分:2)

bind的第一个参数是this的上下文,所以你需要传递3作为第二个参数:

var fn = toy.bind(this, 3);

然后它会起作用:)

答案 2 :(得分:2)

  

有没有办法在没有bind的情况下执行此操作?

是:

var fn = function() { return toy(3); };

或者,如果您想要传递fn this

var fn = function() { return toy.call(this, 3); };