Javascript 如何获取存储在变量中的函数的参数名?

Javascript 如何获取存储在变量中的函数的参数名?,javascript,reflection,Javascript,Reflection,请参阅此代码: var method = function(service,worker){ //.... } function getArguments(method){ //what I want is: //print " the arguments of the method is 'service','worker'" } getArguments(method); 如何从变量中获取参数的名称 我知道方法。如果不调用该方法,参数将不起作用 您可以对函数调用to

请参阅此代码:

var method  = function(service,worker){
   //....
}

function getArguments(method){

  //what I want is: 
  //print " the arguments of the method is 'service','worker'"
}

getArguments(method);
如何从变量中获取参数的名称


我知道
方法。如果不调用该方法,参数将不起作用

您可以对函数调用
toString
,然后使用正则表达式从函数定义中提取参数列表。下面是一个简单的例子:

function getArguments(method){
    // strip off comments
    var methodStr = method.toString().replace(/\/\*.*?\*\/|\/\/.*?\n/g, '');
    var argStr = methodStr.match(/\(([^)]*)\)/);
    alert(argStr[1].split(/\s*,\s*/g));
}

如果仔细查看问题示例代码中的注释,他/她似乎确实需要一个参数名数组。这是保证行为,还是特定于ES的实现?@Sam
argStr[1]。match(/[$\w]+/g)
将生成一个参数名数组(尽管无可否认,它不会处理像
ಠ_ಠmothod.toString()
返回的字符串的精确格式可能会有所不同,但它返回函数定义的事实是ECMAScript标准的一部分。哎呀,我没有看到您在做两个
匹配
的操作。如果不能处理arg之间的空格,那么它可以通用吗?