Anda mempunyai rentetan yang mewakili panggilan fungsi, seperti:
settings.functionName + '(' + t.parentNode.id + ')'
Anda mahu menukar rentetan ini kepada panggilan fungsi sebenar, tetapi tanpa menggunakan eval.
Daripada menggunakan eval, anda boleh menggunakan kod berikut:
var fn = window[settings.functionName]; if(typeof fn === 'function') { fn(t.parentNode.id); }
Kod ini:
Pertimbangkan objek tetapan berikut:
/* Somewhere: */ window.settings = { /* [..] Other settings */ functionName: 'clickedOnItem' /* , [..] More settings */ };
Kemudian dalam kod, fungsi berikut ialah ditakrifkan:
function clickedOnItem (nodeId) { /* Some cool event handling code here */ }
Kini, anda boleh menggunakan kod yang dibentangkan dalam penyelesaian untuk membuat panggilan fungsi:
/* Even later */ var fn = window[settings.functionName]; if(typeof fn === 'function') { fn(t.parentNode.id); }
Ini akan menyebabkan fungsi clickedOnItem dipanggil dengan t. parentNode.id sebagai hujah.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan kepada Panggilan Fungsi dalam JavaScript Tanpa Menggunakan `eval`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!