Javascript 将参数传递给作为参数传递的回调
在以下代码中:Javascript 将参数传递给作为参数传递的回调,javascript,Javascript,在以下代码中: makeComponent: function(componentBuilder, myLib) { componentBuilder.build(function(cmpDefinition, status){ if (status === 'OK') { myLib.doSomething(cmpDefinition); } }); } 我想将内部回调函数放在一个单独的函数中: callBackFunc: function(myLib)
makeComponent: function(componentBuilder, myLib) {
componentBuilder.build(function(cmpDefinition, status){
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
});
}
我想将内部回调函数放在一个单独的函数中:
callBackFunc: function(myLib) {
return function(cmpDefinition, status) {
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
}
}
makeComponent: function(componentBuilder, myLib) {
var callBackFuncVar = callBackFunc(myLib);
componentBuilder.build(callBackFuncVar(cmpDefinition, status));
}
此代码不起作用,我需要将makeComponent
函数更改为以下内容:
makeComponent: function(componentBuilder, myLib) {
var callBackFuncVar = callBackFunc(myLib);
componentBuilder.build(function(cmpDefinition, status) {
callBackFuncVar(cmpDefinition, status)
});
}
为什么直接调用callBackFuncVar
并向其传递参数(如上所述)不起作用
已编辑
如果我这样做怎么办:
callBackFunc: function(cmpDefinition, status) {
var myLib = this.myLib;
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
}
makeComponent: function(componentBuilder, myLib) {
componentBuilder.build(callBackFunc.bind(this));
}
您应该这样做:
callBackFunc: function(myLib) {
return function(cmpDefinition, status) {
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
}
}
makeComponent: function(componentBuilder, myLib) {
var callBackFuncVar = callBackFunc(myLib);
componentBuilder.build(callBackFuncVar);
}
这背后的原因是,
componentBuilder.build
在第一个示例中接收一个函数,在第二个示例中接收callBackFuncVar的结果,而不是callBackFuncVar函数。在另一个问题中,我们如何将参数传递给callBackFunc
?我不完全理解您指的是callBackFunc还是callBackFunc返回的函数。无论如何,您应该阅读JavaScript中的call
、apply
和bind
方法。它可能会帮助您理解JavaScript中的函数编程。我指的是由callBackFunc
返回的函数,就像其他函数一样callBackFuncVar(cmpDefinition,status)
将使用这些参数调用函数,但在第二个错误的示例中,componentBuilder.build
需要一个函数,不是函数调用,也不是函数调用的结果。如果我将outter函数callBackFunc
替换为内部函数函数(cmpDefinition,status)
并将(this)绑定到makeComponent
中的回调函数,该怎么办?