JavaScript 提取函数参数名的实现与 Java 获取当前方法名技巧

作者:拾光

时间:2026-10-29

浏览:148

本文介绍如何利用 JavaScript 的正则表达式提取函数定义中的参数名称,并提供 Java 中通过 StackTraceElement 数组索引获取当前调用方法名的实现代码。文章包含完整的 JS 解析逻辑与 Java 测试示例,详细说明了数组索引偏移量的注意事项,帮助开发者在元数据获取场景中准确定位函数签名信息。

文章目录

JavaScript 提取函数参数名实现

这里展示一段用于解析函数参数名称的 JavaScript 代码实现。


function getArgs(func) {
 // 先用正则匹配,取得符合参数模式的字符串.
 // 第一个分组是这个: ([^)]*) 非右括号的任意字符
 var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1];
 // 用逗号来分隔参数(arguments string).
 return args.split(",").map(function(arg) {
  // 去除注释(inline comments)以及空格
  return arg.replace(/\/\*.*\*\//, "").trim();
 }).filter(function(arg) {
  // 确保没有 undefined.
  return arg;
 });
}

上述逻辑对应的检测函数如下所示,具体示例代码如下:


function myCustomFn(arg1, arg2,arg3) {
 // ...
}
// ["arg1", "arg2", "arg3"]
console.log(getArgs(myCustomFn)); 

正则表达式在合适的场景下确实非常高效,尽管其复杂性常被讨论,但在处理此类字符串解析任务时表现优异。

Java 获取当前方法名技巧

此外,补充一种在 Java 中获取当前执行方法名的方式:Java 在函数中获取当前函数的函数名。


public class Test { 
  private String getMethodName() { 
    StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); 
    StackTraceElement e = stacktrace[2]; 
    String methodName = e.getMethodName(); 
    return methodName; 
  } 
  public void getXXX() { 
    String methodName = getMethodName(); 
    System.out.println(methodName); 
  } 
  public void getYYY() { 
    String methodName = getMethodName(); 
    System.out.println(methodName); 
  } 
  public static void main(String[] args) { 
    Test test = new Test(); 
    test.getXXX(); 
    test.getYYY(); 
  } 
}

【运行结果】

getXXX getYYY

【注意】

代码第5行中,stacktrace[0].getMethodName() 返回的是 getStackTrace,stacktrace[1].getMethodName() 返回的是 getMethodName,而 stacktrace[2].getMethodName() 才是真正调用 getMethodName 的那个函数的名称。

// 注意: stacktrace里面的位置; // [1] 是“getMethodName”, [2] 是调用此方法的method


public static String getMethodName() { 
  StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); 
  StackTraceElement e = stacktrace[2]; 
  String methodName = e.getMethodName(); 
  return methodName; 
}

以上介绍了 JavaScript 获取 function 所有参数名的方法,以及 Java 获取当前函数名的相关技巧。本文内容如有不足之处,敬请谅解,欢迎提出宝贵意见。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章