eval和谷歌闭包编译器的问题

时间:2011-04-14 12:28:54

标签: javascript eval google-closure-compiler

我正在使用谷歌闭包来压缩我的代码,但我遇到以下代码行的问题:

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

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

我的问题是我必须将一个对象传递给该方法,因此我将其作为变量名称(options_for_controller)的String表示形式,但是闭包将更改该名称并且不会更改我的eval字符串中的变量名。

我的解决方案是:

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

但我怎么能做其中一个还是有其他解决方案?

由于

2 个答案:

答案 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。