Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Melaksanakan Fungsi JavaScript Menggunakan Nama Rentetannya?

Bagaimanakah Saya Boleh Melaksanakan Fungsi JavaScript Menggunakan Nama Rentetannya?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 10:27:16700semak imbas

How Can I Execute a JavaScript Function Using Its String Name?

Melaksanakan Fungsi JavaScript dengan Perwakilan Rentetan

Pertanyaan: Anda mempunyai nama fungsi JavaScript yang disimpan sebagai rentetan dan berhasrat untuk memanggilnya kemudian . Bagaimanakah anda boleh menukar rentetan ini kepada penuding fungsi untuk menggunakan fungsi itu seterusnya?

Jawapan:

  • Elakkan eval: Gunakan alternatif yang lebih selamat seperti window["functionName "](hujah) atau window"My"["functionName"](arguments).
  • Fungsi Keselesaan: Laksanakan fungsi seperti executeFunctionByName, seperti yang dilihat di bawah:
function executeFunctionByName(functionName, context /*, args */) {
  // Retrieve arguments
  var args = Array.prototype.slice.call(arguments, 2);
  // Split the namespace into parts
  var namespaces = functionName.split(".");
  // Get the function name
  var func = namespaces.pop();
  // Iterate through namespaces and get the context
  for (var i = 0; i < namespaces.length; i++) {
    context = context[namespaces[i]];
  }
  // Apply the function with the context and arguments
  return context[func].apply(context, args);
}
  • Invokasi: Gunakan fungsi kemudahan sebagai berikut:
executeFunctionByName("My.Namespace.functionName", window, arguments);

Penyelesaian ini membenarkan pelaksanaan fungsi dinamik berdasarkan perwakilan rentetan, walaupun untuk fungsi dalam ruang nama. Pertimbangkan penyelesaian komprehensif yang disediakan untuk mengendalikan senario ini dengan berkesan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Fungsi JavaScript Menggunakan Nama Rentetannya?. 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