在javascript中将一个函数绑定到另一个函数
我有一个javascript函数在javascript中将一个函数绑定到另一个函数,javascript,function,bind,Javascript,Function,Bind,我有一个javascript函数 function foo(callback) { console.log("Hello"); callback(); } 还有一个功能 function bar() { console.log("world"); } 我想做一个函数FooBar FooBar = foo.bind(this, bar); 这很好,但是我实际上要做的是创建一个函数,通常我必须在绑定回调之前绑定一个none函数参数,如下例所示 function foo()
function foo(callback) {
console.log("Hello");
callback();
}
还有一个功能
function bar() {
console.log("world");
}
我想做一个函数FooBar
FooBar = foo.bind(this, bar);
这很好,但是我实际上要做的是创建一个函数,通常我必须在绑定回调之前绑定一个none函数参数,如下例所示
function foo() {
console.log(arguments[0]);
var func = arguments[1];
func();
}
function bar() {
console.log("world");
}
foo.bind(this, "hello");
var FooBar = foo.bind(this, bar);
FooBar();
这就产生了这个错误
[Function: bar]
TypeError: undefined is not a function
一个I如何将一个函数绑定到另一个函数,一旦它绑定到了其他非函数类型?您将“Hello”
绑定到foo
,然后分别将bar
绑定到foo
上-您不应该将bar
绑定到第一个绑定的结果上吗
var FooHello = foo.bind(this, "hello");
var FooBar = FooHello.bind(this, bar);
(它记录“Hello”,“world”)。bind方法不会将函数彼此绑定,其目的是在调用函数时修复“this”关键字的上下文和任何参数。然后它返回一个新函数,保持原始函数不变
所以:foo.bind(这个“hello”)
实际上没有效果。第二次调用bind将创建一个固定参数为bar
的新函数。出现错误的原因是因为只传递了一个参数,参数[1]
未定义
您可以按照Richie的建议添加一个中间变量,或者在一个绑定中传递两个参数:
var FooBar = foo.bind(this, "hello", bar);
最好还包括运行时检查,以便您的函数能够在处理函数时进行检测。这将使您不用担心参数顺序
if(typeof func === 'function'){
func();
}
有关不太复杂的示例,请参见。阅读一下bind这个例子,这个fiddle链接让它看起来像你实际上是在绑定一个foo的绑定。。。