有谁知道如何将参数传递给你无法改变的回调函数?
所以这是我正在尝试实现的代码(这是一个午睡测试方法):
Base.js:
waitForComponentQueryVisible: function (parentNext, parameters) {
var th = this,
query = parameters.query,
scope = th,
callback = callFunct,
timeout = 10000;
//The function inside here (returnToParentTester(parentNext, parameters)) is from Base.js
callFunct = function () {
scope.returnToParentTester(parentNext);
}
this.test.waitForComponentQueryVisible(query, callback, scope, timeout);
},
这里的问题分为两部分: 1.我无法使范围恰到好处,因此我可以使用Base.js中的returnToParentTester方法。 2.我想将parentNext传递给方法,但在将其定义为回调时不能这样做
这是我需要作为回调运行的方法:
Base.js:
returnToParentTester: function (parentNext, parameters) {
debugger;
if (parentNext) {
parentNext.call(undefined, parameters);
} else {
this.test.fail('--Developer Error-- undefined parentNext ' +
'variable. All the chains are going to fail');
}
},
答案 0 :(得分:0)
我无法使范围恰到好处所以我可以使用Base.js中的returnToParentTester方法
使用call
方法更改范围:
Base.returnToParentTester.call(myScope)
我想将parentNext传递给方法但在将其定义为回调时不能这样做
使用匿名函数作为回调并在其范围内传递参数:
$("body").click(function(e){foo(e.target,bar,baz)})
然后让它完成工作:
function foo(myScope, next1, param1)
{
Base.returnToParentTester.call(myScope, next1, param1)
}
<强>参考强>