我正在使用谷歌闭包来压缩我的代码,但我遇到以下代码行的问题:
eval('this.find(\''+ element_to_append_the_controller+ '\').'+controller_to_load+'(options_for_controller)');
我必须使用eval,因为我必须在元素上执行的方法(controller_to_load
)是可变的,并且取决于我得到的参数。
我的问题是我必须将一个对象传递给该方法,因此我将其作为变量名称(options_for_controller
)的String表示形式,但是闭包将更改该名称并且不会更改我的eval字符串中的变量名。
我的解决方案是:
但我怎么能做其中一个还是有其他解决方案?
由于
答案 0 :(得分:3)
有些程序员使用eval是因为他们没有意识到而不是写eval('a.' + b)
你可以写a[b]
尝试使用此代替您的eval()
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller);
答案 1 :(得分:0)
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller)
AKA不使用eval。