JS - 如何在不调用函数的情况下将函数作为参数传递(带参数)

时间:2015-09-15 15:10:41

标签: javascript

我有这个方法:

myFunction: function(a,b,c) { 
   ... 
}

现在,我想将它作为参数传递给另一个方法,以便可以在该方法中执行:

...
var a = "bla";
var b = "ble";
var c = "bli";
someFunction(myFunction(a,b,c),true,"test");

然后在someFunction里面我想调用myFunction:

someFunction: function(func,bool,str){
   func();
}

这可能吗?

由于

2 个答案:

答案 0 :(得分:3)

是的,但你必须创建一个函数来调用函数,即bind(又名" curry")函数引用和参数:

someFunction(myFunction.bind(this, a, b, c), true, "test");

某些较旧的浏览器(例如IE 8)不支持bind方法,但您可以使用函数表达式执行相同的操作:

someFunction(function() { myFunction(a, b, c); }, true, "test");

如果您使用的是jQuery,则需要$.proxy method来使其与浏览器无关:

someFunction($.proxy(myFunction, this, a, b, c), true, "test");

答案 1 :(得分:0)

是的,这可以在JavaScript中使用。

someFunction(function () {
    myFunction(a,b,c);
}, true, "test");

你甚至可以这样做:

var myFunc = function () {
    myFunction(a,b,c);
};
someFunction(myFunc, true, "test");