関数のパラメータ名を解析する 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 は、関数
で現在の関数の関数名を取得します。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(); } }
【実行結果】
XXX を入手
getYYY
【ご注意】
コードの 5 行目で、stacktrace[0].getMethodName() は getStackTrace、stacktrace[1].getMethodName() は getMethodName、stacktrace[2].getMethodName() は呼び出す関数の関数名です。 getメソッド名。
// 注: スタックトレース内の位置;
// [1] は "getMethodName"、[2] はこのメソッドを呼び出すメソッドです
public static String getMethodName() { StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); StackTraceElement e = stacktrace[2]; String methodName = e.getMethodName(); return methodName; }
上記の内容は、この記事で紹介したjsの関数の全パラメータ名を取得する方法です。 文章がうまくまとまっていない場合はご容赦ください。貴重なご意見をお待ちしております。