Javascript 从自定义标记属性的值创建函数

Javascript 从自定义标记属性的值创建函数,javascript,jquery,attributes,eval,Javascript,Jquery,Attributes,Eval,给定一个元素: <div id='adiv' customAttr='myFuncToExecute'></div> myFuncV1将作为myFuncV1()执行。或者,我可以在事件处理程序绑定中使用myFuncV2: $('#adifferentdiv').click(myFuncV2); 这确实满足了我的需要,但是使用newfunction()构造函数等同于使用eval() 问题:是否有更好的方法来读取和评估(没有双关语)包含脚本中其他地方使用的方法名称的自定义

给定一个元素:

<div id='adiv' customAttr='myFuncToExecute'></div>
myFuncV1
将作为
myFuncV1()
执行。或者,我可以在事件处理程序绑定中使用
myFuncV2

$('#adifferentdiv').click(myFuncV2);
这确实满足了我的需要,但是使用
newfunction()
构造函数等同于使用
eval()

问题:是否有更好的方法来读取和评估(没有双关语)包含脚本中其他地方使用的方法名称的自定义属性


提前感谢您的帮助。

创建对象的方法属性,然后您可以删除新的函数方法:

var obj = {someMethod: function(){...}};

obj[$('#adiv').attr('customAttr')](); 
尽管您可能希望在调用obj[$('#adiv').attr('customAttr')]之前测试它是否存在,例如

var fn = obj[$('#adiv').attr('customAttr')];

if (fn) fn();

谢谢我很确定这正是我想要的。一个简短的附带问题:有没有一种方法可以在方法接受参数的情况下实现这一点?我假设同样的事情:
varobj={someMethod:function(param1,param2){…}?其中param1是表示非全局变量名称的字符串,否。您可以使用带方括号表示法的字符串访问对象的命名属性,就是这样。全局变量是一种特殊情况,因为它们是全局(浏览器中的窗口)对象的属性。其他变量没有等价物(因为无法直接访问“变量对象”或函数执行上下文)。
var fn = obj[$('#adiv').attr('customAttr')];

if (fn) fn();