2014-03-25 66 views
2

如何回調變量中定義的函數(我這樣做)... 不止如此將變量傳遞給該函數(它也被定義爲變量)jquery:從變量中調用函數

實施例: Functionvariable,變量是變量....

function ffunction(Functionvariable,variable){ 
    Functionvariable(variable); //This is actually not working...how to do this... 
} 

我想這一點,

function ffunction(Functionvariable,variable){ 
    eval(Functionvariable + '('+ variable + ')'); //no luck 
} 

此被加工..

function ffunction(Functionvariable,variable){ 
     eval(Functionvariable)(variable); 
    } 
+0

如何編輯這種方法稱爲 –

+0

... ....... –

+0

我希望你的arg不被稱爲函數,因爲函數在javascript中有特殊含義 –

回答

2

只是要避免保留字,你應該對你的第一個解決方案很好。
這裏是小提琴http://jsfiddle.net/6R3ye/

function dummy(func, v){ 
    eval(func)(v); 
}; 
var f = 'alert'; 
var x = 'abc'; 
dummy(f, x); 
+0

我提到.. func這裏也是變量...我通過一些名稱作爲變量.... –

+0

現在它是你想要的 – ElmoVanKielmo

+0

工作...謝謝 –

0

我收集了4種方法,你可以使用,具有1個或多個PARAMS

而一個fiddle

function ffunction(fn, p1, p2) { 
    console.log("ffunction is calling \n" + fn.toString() + "\nwith " + p1.toString()); 

    eval(fn)(p1, p2); 
    fn(p1, p2); 
    fn.call(fn, p1, p2); 
    fn.apply(fn, [p1, p2]); 
} 

function f1(p1, p2){ 
    console.log("f1 got " + p1.toString() + " and " + p2.toString()); 
} 

ffunction(f1, 'foo', 'bar'); 
+0

您還沒有閱讀評論。如果'fn'將函數的名稱保存爲一個字符串,則只有您的第一個解決方案才能工作。問題已經解決了。 @Anish請接受工作答案。 – ElmoVanKielmo