Js利用正则表达式获得回调函数的函数名

function getArgs(func) {

// 先用正则匹配,取得符合参数模式的字符串.

// 第一个分组是这个: ([^)]*) 非右括号的任意字符

var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1];

// 用逗号来分隔参数(arguments string).

return args.split(",").map(function(arg) {

// 去除注释(inline comments)以及空格

return arg.replace(/\/\*.*\*\//, "").trim();

}).filter(function(arg) {

// 确保没有 undefined.

return arg;

});

}

function run(fn){

if(typeof fn ==="function"){

console.log(fn) //在主函数体可以看到回调函数的一切

var name=getArgs(fn)[0]

alert(name)

}

}

run(function(a){ //回调函数是匿名或者有名都可以用这个方法获得

a++

})

function add(a){

a++

}

你可能感兴趣的:(Js利用正则表达式获得回调函数的函数名)