转载

用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"]

你会发现正则表达式是一个很强大的工具。这个函数究竟有大多用处还不好说,但当你需要一个这样的函数时,它就必不可少了。

正文到此结束
Loading...