Kaedah JavaScript untuk mendapatkan semua nama parameter petua function_javascript

WBOY
Lepaskan: 2016-05-16 15:34:28
asal
1536 orang telah melayarinya

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;
 });
}
Salin selepas log masuk

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

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

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(); 
  } 
}
Salin selepas log masuk

【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; 
}
Salin selepas log masuk

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.

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan