用JavaScript获取函数参数名称
最近看到一个nodejs程序,promisify-node,它能够将一个普通的函数或对象转变成promised方式的API。经过查看源代码,发现它是通过读取函数的参数来寻找回调函数式的参数。这种方式看起来有点怪,但有时候很有用。
我研究了一下它的能够读取函数参数名的JavaScript函数,下面就是:
function getArgs(func) { // 首先匹配函数括弧里的参数 var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1]; // 分解参数成数组 return args.split(",").map(function(arg) { // 去空格和内联注释 return arg.replace(/\/\*.*\*\//, "").trim(); }).filter(function(arg) { // 确保没有undefineds return arg; }); }
现在,有了上面的函数,下面我们再写一个测试函数,看看它的使用方法:
function myCustomFn(arg1, arg2,arg3) { } console.log(getArgs(myCustomFn)); // ["arg1", "arg2", "arg3"]
你会发现正则表达式是一个很强大的工具。这个函数究竟有大多用处还不好说,但当你需要一个这样的函数时,它就必不可少了。
阅读余下内容
也可以试一下这个写法
function funparams(func)
{
return func.toString().substr(func.toString().indexOf(‘(‘)+1,func.toString().indexOf(‘)’)-func.toString().indexOf(‘(‘)-1);
}