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的实现?@SamargStr[1]。match(/[$\w]+/g)
将生成一个参数名数组(尽管无可否认,它不会处理像ಠ_ಠ我相信mothod.toString()
返回的字符串的精确格式可能会有所不同,但它返回函数定义的事实是ECMAScript标准的一部分。哎呀,我没有看到您在做两个匹配
的操作。如果不能处理arg之间的空格,那么它可以通用吗?