は、私は、オブジェクトの文字列表現を持っている場合は、私が直接コールを使用してクロージャ内の関数を呼び出すか、適用しますか?
var foo = Process.Fred.Add(1,2,3);
を関数を呼び出すことができ、私は、私がアクセスできるようにするいくつかの機能が含まれている緩い増強閉鎖[大幅に簡略化]
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 data = {
"function": "Process.Fred.Add",
"params": [1,2,3]
}
タイプエラーが発生するため、data.function.apply(data.function.params)
は使用できません。
([K] O(O、K)=>のMyStuff)を削減...
だろう'Proccess [data.function] .apply(data.params)'です。あなたは文字列に適用を使用することはできません – dloeda
これは 'Process [" Process.Fred.Add "]となりますapply(...' – frumbert
はい、これよりもクリーンなものに変更します 'Proccess [data.function.split ( '。')[1]] [data.function.split( '。')[2]]。apply(data.params) 'これが本質です。 – dloeda