让我说我有这个功能:
function toy(input) {
return input + 1;
}
我想基本上生成一个函数,通过将3绑定到输入来打印4。所以我可以调用类似fn()的东西,它会打印4。
所以我尝试了:
var fn = toy.bind(3);
然后当我执行fn()时,我没有得到4.
我是否需要使用'this'才能使这项工作/有没有办法在没有绑定的情况下执行此操作?
答案 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); };