根据自定义标记属性的值创建函数

时间:2014-03-03 01:26:07

标签: javascript jquery attributes eval

给出一个元素:

<div id='adiv' customAttr='myFuncToExecute'></div>

读取自定义属性并将其转换为JavaScript中的可执行方法的最佳方法是什么。我目前正在使用new Function()构造函数:

if ($('#adiv').attr('customAttr')) {
    var myFuncV1 = new Function('return ' + $('#adiv').attr('customAttr') + '()');
    var myFuncV2 = new Function($('#adiv').attr('customAttr'));
}

myFuncV1可以myFuncV1()执行。或者,我可以在事件处理程序绑定中使用myFuncV2

$('#adifferentdiv').click(myFuncV2);

这适用于我需要的内容,但使用new Function()构造函数等同于使用eval()

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

创建对象的方法属性,然后可以删除 new Function 方法:

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

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

虽然您可能希望在调用之前测试obj[$('#adiv').attr('customAttr')],例如

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

if (fn) fn();