說我有一個寬鬆隆乳封閉其中包含一些功能我想要訪問[大大簡化]使用call調用封閉函數或應用?
var Process = (function(Process,$){
_thing1 = function(a,b,c) {
return a + b + c;
}
_thing2 = function(a,b,c) {
return $(a).html(b + c);
}
return {
Fred: {
Add: _thing1
},
Bob: {
Add: _thing2
}
}
}(Process || {},jQuery));
我可用於調用函數直接
var foo = Process.Fred.Add(1,2,3);
如果我有一個字符串表示在一個對象我想調用的函數名稱和一些參數,我該如何調用它?
var data = {
"function": "Process.Fred.Add",
"params": [1,2,3]
}
我不能使用data.function.apply(data.function.params)
,因爲它會導致打印錯誤。
你可以使用'Proccess [data.function]。適用(data.params)'。你不能使用一個字符串上的應用程序 – dloeda
但是這將是'Process [「Process.Fred.Add」]。apply(...' – frumbert
是的,你會改變乾淨的東西比'Proccess [data.function.split ('。')[1]] [data.function.split('。')[2]]。apply(data.params)''但這是本質的.Eval是如此不安全 – dloeda