2011-04-14 93 views
1

我使用谷歌关闭压缩我的代码,但我有以下行的代码中的问题:问题的评估和谷歌关闭编译器

 eval('this.find(\''+ element_to_append_the_controller+ '\').'+controller_to_load+'(options_for_controller)'); 

我不得不使用eval,因为该方法(controller_to_load)我必须执行元素是可变的,并取决于我得到的参数。

我的问题是我必须将一个对象传递给该方法,所以我以变量名称(options_for_controller)的字符串表示形式进行操作,但是闭包会更改该名称,并且不会更改变量名称在我的评估字符串。

我的解决办法是:

  • 获取变量名动态的字符串
  • 解析对象(回调函数)字符串
  • 禁用压缩这些行代码

但我怎么能做其中一个或有另一种解决方案?

感谢

回答

3

有些程序员使用eval,因为他们没有意识到,而不是写eval('a.' + b)你可以写a[b]

尝试,而不是你的eval()

this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller); 
+0

感谢,您的权利这一点,替换这一切evals动态执行类型,真棒。 – LeonS 2011-04-14 12:48:29

0
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller) 

AKA不使用eval。