Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mencipta Fungsi dengan Nama Runtime-Determined dalam JavaScript (Tanpa Eval)?

Bagaimana untuk Mencipta Fungsi dengan Nama Runtime-Determined dalam JavaScript (Tanpa Eval)?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 08:34:01269semak imbas

How to Create Functions with Runtime-Determined Names in JavaScript (Without Eval)?

Mencipta Fungsi dengan Nama Yang Ditentukan Masa Jalan (Tanpa Eval)

Dalam JavaScript, mencipta fungsi dengan nama yang ditentukan masa jalan boleh dilaksanakan dalam ECMAScript 2015 dan kemudiannya, menggunakan dua ciri utama: ungkapan fungsi tanpa nama dan nama sifat yang dikira.

Penyelesaian ES2015:

Dalam ES2015, ungkapan fungsi tanpa nama yang ditetapkan kepada sifat objek mewarisi nama daripada harta itu. Ini membolehkan kami:

const dynamicName = "foo" + Math.floor(Math.random() * 1000);
const obj = {
  [dynamicName]() {
    throw new Error();
  },
};
const f = obj[dynamicName];

// Demonstrate function's name property
console.log("Function's `name` property: " + f.name);

// Exception handling reveals the name in stack traces
try {
  f();
} catch (e) {
  console.log(e.stack);
}

Dalam kod ini:

  • dynamicName menentukan nama fungsi secara dinamik.
  • obj ialah objek dengan sifat bernama dynamicName.
  • Ungkapan fungsi tanpa nama yang diberikan kepada sifat dynamicName secara tidak langsung mewarisi nama.

Nota Keserasian:

Perhatikan bahawa semasa semua penyemak imbas moden melaksanakan fungsi, Edge dan Safari tidak memaparkan nama yang diberikan dalam surih tindanan.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Fungsi dengan Nama Runtime-Determined dalam JavaScript (Tanpa Eval)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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