Rumah  >  Artikel  >  hujung hadapan web  >  Kaedah JavaScript untuk mendapatkan semua nama parameter petua function_javascript

Kaedah JavaScript untuk mendapatkan semua nama parameter petua function_javascript

WBOY
WBOYasal
2016-05-16 15:34:281536semak imbas

Saya menulis fungsi JavaScript untuk menghuraikan nama parameter fungsi tersebut, kodnya adalah seperti berikut:

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

Di atas adalah fungsi pengesanan, kod sampel adalah seperti berikut:

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

Adakah ungkapan biasa adalah perkara yang baik? Saya tidak tahu apa-apa lagi, tetapi ia masih sangat berkuasa apabila digunakan dalam senario yang sesuai!

datang dengan kaedah Java untuk mendapatkan nama fungsi semasa: Java mendapat nama fungsi fungsi semasa dalam fungsi

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

【Hasil jalankan】

dapatXXX
dapatkanYYY

【Perhatian】

Dalam baris 5 kod, stacktrace[0].getMethodName() ialah getStackTrace, stacktrace[1].getMethodName() ialah getMethodName dan stacktrace[2].getMethodName() ialah nama fungsi bagi fungsi yang memanggil getMethodName.

// Nota: kedudukan di dalam surih tindanan;
// [1] ialah "getMethodName", [2] ialah kaedah yang memanggil kaedah ini

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

Kandungan di atas adalah kaedah untuk mendapatkan semua nama parameter fungsi dalam js yang diperkenalkan dalam artikel ini. Harap maaf jika artikel ini tidak ditulis dengan baik.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn