一方、使用することeval
は良いプログラミング手法ではありません。この質問は、教訓的な性質、またはより良い解決策を学ぶためのものです。
Javascriptの次の例を参照してください。
var foo = foo || {};
foo.bar = function(str) { alert(str); };
foo.bar('aaa'); // trigger alert('aaa')
window['foo']['bar']('bbb'); // trigger alert('bbb')
foo.bar('str')
、、foo.nestedObj.bar(params)
で動作する一般的な呼び出し元を探していますfoo.n2.n[1..99].bar(params)
それは私が次のようなものを呼び出すことができないためです:
param = [5,2,0];
call = 'foo.bar';
window[call](param); // not work
しかし、evalを使用して関数を呼び出すことができます。
param = [5,2,0];
call = 'foo.bar'
eval(call + '(param)'); // works
どうすればこれを行わずに行うことができますか eval
?