如何避免这个javascript eval()?

时间:2016-01-05 12:05:17

标签: javascript

我试图在我的javascript中删除我的几个eval的代码,但我不确定实现我的最佳方式试图做。

我有一个"过滤器形式"在我的一堆页面上,附加了一些JS,根据用户的操作重新加载部分页面。

不同的页面需要不同的操作。

所以我的解决方案(我想到的是年前......)是

<form name="callback_loadCalendar">
<form name="callback_loadNames">

这个可怕的JS(附加到onchange事件等)然后调用相关函数:

if (f.getAttribute('name') && f.getAttribute('name').indexOf('callback') === 0)
    eval(f.getAttribute('name').substr(9)+'()');

E.g。这将分别调用loadCalendar()loadNames()

我应该做什么呢?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果函数在全局范围内,则可以在全局范围内使用括号表示法来访问函数引用。

window[f.getAttribute('name').substr(9)]();