js 动态调用字符串方法并传入对应参数

在项目应用中,常常会须要根据业务数据须要动态去拼凑字符串,而后将字符串做为js代码进行执行。数组

js提供eval()来支持。这里分享一个调用函数并传入须要参数的一个方法demoapp

//动态调用自定义js方法.args是以逗号分隔的参数字符串
var CallFunName = function (fn, args) {
    var aArr = [];//传入的参数集合

    if (args != null && args != "") {
        aArr = args.split(",");
    }


    try {
        fn = eval(fn);
    } catch (e) {
        console.log(e);
        alert(funName + '方法不存在!');
    }
    if (typeof fn === 'function') {
        try {
            fn.apply(this, aArr );//注意此处用apply,而非call
        }
        catch (ex) {
            console.log(ex);
            alert(funName + '变量个数不对');
        }
    }
}

一、考虑到调用函数方法CallFunName第一个参数(函数名)是在页面动态添加的js内容(即字符串),故没有直接支持传入参数数组的方式,而是一串以逗号分隔的参数字符串函数

二、在方法体内把参数字符串转换为数组。而后经过apply调用this

      此处不选用call调用的缘由为:call调用形式会把参数数组做为一个变量传递给待待用的方法,而每每咱们待调用的方法参数不是以数组形式声明的:spa

function Fun(arg1,arg2,...)
{
      ...
}
相关文章
相关标签/搜索