js动态调⽤字符串⽅法并传⼊对应参数
在项⽬应⽤中,经常会需要根据业务数据需要动态去拼凑字符串,然后将字符串作为js代码进⾏执⾏。
js提供eval()来⽀持。这⾥分享⼀个调⽤函数并传⼊需要参数的⼀个⽅法demo
//动态调⽤⾃定义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 + '变量个数不对');
}
js在字符串中添加字符}
}
1、考虑到调⽤函数⽅法CallFunName第⼀个参数(函数名)是在页⾯动态添加的js内容(即字符串),故没有直接⽀持传⼊参数数组的⽅式,⽽是⼀串以逗号分隔的参数字符串
2、在⽅法体内把参数字符串转换为数组。然后通过apply调⽤
此处不选⽤call调⽤的原因为:call调⽤形式会把参数数组作为⼀个变量传递给待待⽤的⽅法,⽽往往我们待调⽤的⽅法参数不是以数组形式声明的:
function Fun(arg1,arg2,...)
{
...
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论