次のような関数呼び出しを表す文字列があります。
settings.functionName + '(' + t.parentNode.id + ')'
この文字列を eval を使用せずに実際の関数呼び出しに変換したいと考えています。
eval を使用する代わりに、次のコードを使用できます。
var fn = window[settings.functionName]; if(typeof fn === 'function') { fn(t.parentNode.id); }
このコード:
次の設定オブジェクトを考えます:
/* Somewhere: */ window.settings = { /* [..] Other settings */ functionName: 'clickedOnItem' /* , [..] More settings */ };
コードの後半で、次の関数が定義されています:
function clickedOnItem (nodeId) { /* Some cool event handling code here */ }
これで、ソリューションに示されているコードを使用して関数呼び出しを行うことができます:
/* Even later */ var fn = window[settings.functionName]; if(typeof fn === 'function') { fn(t.parentNode.id); }
これにより、引数として t.parentNode.id を使用して clickedOnItem 関数が呼び出されます。
以上が「eval」を使用せずにJavaScriptで文字列を関数呼び出しに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。