而使用eval
不是一個好的編程習慣。這個問題是說教性質的,或學習更好的解決方案:使用命名空間的Javascript動態函數調用
見在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
但我可以調用USI NG EVAL:
param = [5,2,0];
call = 'foo.bar'
eval(call + '(param)'); // works
我怎樣才能做到這一點無eval
?
這幾乎每天都被問到。等一下,找那些傻瓜。 –
http://stackoverflow.com/q/14375753/989121 – georg
可能重複[是否邪惡使用eval將字符串轉換爲函數?](http://stackoverflow.com/questions/14396647/is-it -evil-to-use-eval-to-convert-a-string-to-a-function) –