将参数传递给回调函数而不更改方法(Siesta Testing命名空间)



有人知道如何将参数传递给无法更改的回调函数吗?

下面是我试图实现的代码(这是一种午睡测试方法):

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');
    }
},

我不能得到正确的范围,所以我可以使用在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)
 }

参考

  • 快速JavaScript最大/最小

  • Mixin和构造函数

  • 功能.模式.应用重新访问

  • applyFunctionArguments-JavaScript 中的参数注入技术

  • 函数式JavaScript,第3部分:.apply()、.call()和参数对象

相关内容

  • 没有找到相关文章

最新更新