给出一个元素:
<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()
。
问题:是否有更好的方法来阅读和评估(没有双关语)自定义属性,其中包含要在脚本中的其他位置使用的方法的名称?
提前感谢您的帮助。
答案 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();