【问题标题】:Passing function with parameters as parameter of another function in JavaScript将带有参数的函数作为JavaScript中另一个函数的参数传递
【发布时间】:2013-11-06 09:55:27
【问题描述】:

我想将一个带参数的函数传递给另一个函数并让它在一个事件上运行,如下所示:

var main_object = function () {
    this.main_function = function (function) {
        document.addEventListener('click',function);
    }
    this.passed_function = function (variable) {
        alert(variable);
    }
}



var main_object = new main_object();
main_object.main_function(main_object.passed_function(3));

【问题讨论】:

  • 您应该将 main_function 的“function”参数替换为其他参数。 “function”是保留关键字。

标签: javascript function object methods


【解决方案1】:
function mainfunc(func) {
    alert(func);
}

function callBackFn(a) {
    alert(a);
}

 

mainfunc("arg1", callBackFn("javaScritFnParameter"));  //call this in load

确定它可以正常工作,无需担心......但 callbackFn 将首先执行,然后仅执行“arg1”。

【讨论】:

  • 哇,太有趣了。我不确定它是如何工作的。对于任何想知道的人,这里是jsFiddle
【解决方案2】:

在现代 JavaScript 引擎中,您可以 bind 函数:

mainObject.main_function(main_object.passed_function.bind(main_object, 3));

当函数执行时,bind 的第一个参数将是 thisbind 的任何剩余参数将是函数调用中的前导参数。

【讨论】:

  • 为了兼容性,此链接提供了一些兼容性代码:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 我将尝试这个以确保我理解正确。
  • @JVE999 - 是的,感谢您指出兼容性代码。这就是我的答案中的链接。
  • 啊。谢谢。我没有注意到它是一个链接,颜色与我屏幕上的常规文本颜色相似。
【解决方案3】:

对于您所说的,您可以使用bind。在你的情况下,你会这样做:

main_object.main_function(main_object.passed_function.bind( main_object, 3 ));

【讨论】:

    【解决方案4】:

    如果我没听错的话,

    main_object.main_function(function() { main_object.passed_function(3) });
    

    【讨论】:

    • 这也是一个有用的答案。我要试试看。我猜这就是 EventListener 函数的工作原理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2022-11-12
    相关资源
    最近更新 更多