function_javascript ヒントのすべてのパラメータ名を取得する JavaScript メソッド

WBOY
リリース: 2016-05-16 15:34:28
オリジナル
1536 人が閲覧しました

関数のパラメータ名を解析する 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の関数の全パラメータ名を取得する方法です。 文章がうまくまとまっていない場合はご容赦ください。貴重なご意見をお待ちしております。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート