JavaScript:functionのすべてのパラメータ名を取得します.


promisify-nodeのソースコードを読む時、作者が基本的な関数と対象をどうやって対応するpromised-based APIに変換するかを見たいです.彼らは関数の署名によって、callbackまたはcbのような一般的なコールバックパラメータの名前を検索することをすぐに認識しました.コードが変に見えますが、確かに有効です.【注:次世代のJSフレームは、AnglarJSのようなこの検出戦略を採用することが多いです.】
関数のパラメータ名を解析するためにJavaScrip t関数を書きました.コードは以下の通りです.
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は関数で現在の関数名を取得します.
//   : stacktrace     ;
// [1]  “getMethodName”, [2]        method 
public static String getMethodName() {  
    StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();  
    StackTraceElement e = stacktrace[2];  
    String methodName = e.getMethodName();  
    return methodName;  
}  
译文リンク:Detect Function Agment Names with JavaScript
日付:2015年10月21日
翻訳日:2015年10月26日
通訳:アンカーhttp://blog.csdn.net/renfufei