Maison  >  Article  >  interface Web  >  Méthode JavaScript pour obtenir tous les noms de paramètres des astuces function_javascript

Méthode JavaScript pour obtenir tous les noms de paramètres des astuces function_javascript

WBOY
WBOYoriginal
2016-05-16 15:34:281545parcourir

J'ai écrit une fonction JavaScript pour analyser les noms de paramètres de la fonction, le code est le suivant :

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;
 });
}

Ce qui précède est la fonction de détection, l'exemple de code est le suivant :

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

L'expression régulière est-elle une bonne chose ? Je ne sais rien d'autre, mais elle est toujours très puissante lorsqu'elle est utilisée dans des scénarios appropriés !

est livré avec une méthode Java pour obtenir le nom de la fonction actuelle : Java obtient le nom de la fonction actuelle dans la fonction

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(); 
  } 
}

【Exécuter les résultats】

getXXX
getYYY

【Attention】

Dans la ligne 5 du code, stacktrace[0].getMethodName() est getStackTrace, stacktrace[1].getMethodName() est getMethodName et stacktrace[2].getMethodName() est le nom de la fonction qui appelle getMethodName.

// Remarque : la position à l'intérieur de stacktrace ;
// [1] est "getMethodName", [2] est la méthode qui appelle cette méthode

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

Le contenu ci-dessus est la méthode pour obtenir tous les noms de paramètres de fonction dans js introduits dans cet article. Veuillez me pardonner si cet article n'est pas bien écrit. Bienvenue pour donner vos précieux avis.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn