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

时间:2014-01-24 02:53:40

标签: 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);

如何从变量中获取参数的名称?

我知道method.arguments在调用方法时不起作用。

1 个答案:

答案 0 :(得分:8)

您可以在函数上调用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));
}

Demonstration