Javascript将字符串转换为函数调用
在下面的场景中,我需要根据html元素的数据属性调用函数Javascript将字符串转换为函数调用,javascript,jquery,Javascript,Jquery,在下面的场景中,我需要根据html元素的数据属性调用函数 function func1(arg1){ alert("func1"); } function func2(arg2){ alert("func2"); } jQuery(document).on('click', '.func-class', function(){ var funcName = jQuery(this).data('func-name'); var funcArg = jQuery(thi
function func1(arg1){
alert("func1");
}
function func2(arg2){
alert("func2");
}
jQuery(document).on('click', '.func-class', function(){
var funcName = jQuery(this).data('func-name');
var funcArg = jQuery(this).data('func-arg');
//Need to call funcName(funcArg) here
});
HTML:
Func1
功能2
JSFiddle相同:
如果这些函数是在全局范围内定义的,则可以执行以下操作:
window[funcName](funcArg);
否则,我建议将它们放在如下对象中:
var functions = {
"func1":func1,
"func2":func2
};
functions[funcName](funcArg);
第二个函数实际上更安全,因为它有助于防止任意代码执行。如果这些函数是在全局范围内定义的,则可以执行以下操作:
window[funcName](funcArg);
否则,我建议将它们放在如下对象中:
var functions = {
"func1":func1,
"func2":func2
};
functions[funcName](funcArg);
第二种方法实际上更安全,因为它有助于防止任意代码执行
但是您必须通过在对象中设置函数来获得函数的引用,例如(就像我在窗口对象中所做的那样),因为它在jQuery.ready函数中是私有的
$('.func-class').click(function(){
var toCallArg = $(this).data('func-arg');
var toCall = function(toCallArg){
//your code
};
toCall(toCallArg);
});
但是您必须通过在对象中设置函数来获得函数的引用,例如(就像我在窗口对象中所做的那样),因为它在jQuery.ready函数中是私有的
$('.func-class').click(function(){
var toCallArg = $(this).data('func-arg');
var toCall = function(toCallArg){
//your code
};
toCall(toCallArg);
});