如何解决eval和Google闭包编译器存在问题
| 我正在使用Google Closure压缩我的代码,但是以下代码行存在问题: eval(\'this.find(\\\'\'+ element_to_append_the_controller+ \'\\\').\'+controller_to_load+\'(options_for_controller)\');
我必须使用eval,因为我必须在元素上执行的方法(controller_to_load
)是可变的,并且取决于我得到的参数。
我的问题是我必须将一个对象传递给该方法,所以我将其作为变量名(options_for_controller
)的字符串表示形式进行,但是闭包将更改该名称,而不会更改我的变量名。评估字符串。
我的解决方案是:
将变量名动态化为字符串
将对象(带有回调函数)解析为字符串
禁用这些代码行的压缩
但是,我该怎么办其中之一?还是有其他解决方案?
谢谢
解决方法
一些程序员使用eval是因为他们没有意识到而不是写
eval(\'a.\' + b)
而是可以写a[b]
试试这个代替你的eval()
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller);
,this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller)
也就是不使用eval。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。