JavaScript:functionのすべてのパラメータ名を取得します.
1465 ワード
promisify-nodeのソースコードを読む時、作者が基本的な関数と対象をどうやって対応するpromised-based APIに変換するかを見たいです.彼らは関数の署名によって、
関数のパラメータ名を解析するためにJavaScrip t関数を書きました.コードは以下の通りです.
Javaが現在の関数名を取得する方法が添付されています.Javaは関数で現在の関数名を取得します.
日付:2015年10月21日
翻訳日:2015年10月26日
通訳:アンカーhttp://blog.csdn.net/renfufei
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