Bagaimanakah Anda Boleh Mendapatkan Nama Fungsi dalam JavaScript?

DDD
Lepaskan: 2024-10-26 05:42:03
asal
434 orang telah melayarinya

How Can You Retrieve a Function's Name in JavaScript?

Mengakses Nama Fungsi Dalam Skopnya

Keupayaan untuk mendapatkan semula nama fungsi dari dalam fungsi itu sendiri ialah teknik yang berguna dalam JavaScript. Walau bagaimanapun, ini boleh mencabar kerana nama fungsi tidak tersedia apabila mengaksesnya dari dalam.

Penyelesaian ES6:

Dalam ES6, mengakses nama fungsi adalah mudah:

<code class="javascript">const getFunctionName = () => myFunction.name;</code>
Salin selepas log masuk

Penyelesaian ES5:

Untuk ES5, pendekatan berikut disyorkan:

<code class="javascript">function getFunctionName(func) {
  const funcStr = func.toString();
  const name = funcStr.substring('function '.length, funcStr.indexOf('('));
  return name;
}</code>
Salin selepas log masuk

Menggunakan Function.caller ( Tidak Disyorkan):

Function.caller menyediakan penyelesaian bukan standard untuk mengakses nama pemanggil. Walau bagaimanapun, ia harus dielakkan kerana kemungkinan isu keserasian dan penamatannya dalam mod ketat.

Penyelesaian Berasaskan Regex:

Satu lagi pendekatan ES5 yang cekap melibatkan penggunaan ungkapan biasa :

<code class="javascript">const getFunctionName = (func) => /function\s+([a-zA-Z$][a-zA-Z$0-9]+)/.exec(func.toString())[1];</code>
Salin selepas log masuk

Contoh:

Mari kita gunakan coretan kod yang disediakan sebagai contoh:

<code class="javascript">var ns.parent = function() {
  // at this point, i want to know who the child is that called the parent
  // ie
  console.log(getFunctionName(this));
}

var obj = new ns.parent.child();</code>
Salin selepas log masuk

Ini akan mengeluarkan: "newFunc" kerana newFunc ialah fungsi yang memanggil fungsi induk.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mendapatkan Nama Fungsi dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!