2015-09-15 52 views
2

我有這樣的方法:JS - 如何通過功能參數(帶參數),而不必調用它

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

'someFunction(myFunction.bind(NULL,A,B,C),真正的「測試「);' –

回答

3

是的,但你必須創建一個函數,使函數調用,即bind(又名「咖喱」)與參數的函數參考:

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"); 
+0

我用JQuery代理,謝謝! – qxlab

0

是的,這是可能的JavaScript。

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

你甚至可以這樣做:

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