ホームページ  >  記事  >  ウェブフロントエンド  >  「eval」を使用せずにJavaScriptで文字列を関数呼び出しに変換するにはどうすればよいですか?

「eval」を使用せずにJavaScriptで文字列を関数呼び出しに変換するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 06:22:02702ブラウズ

How to Convert a String into a Function Call in JavaScript Without Using `eval`?

JavaScript での文字列の関数呼び出しへの変換

質問

次のような関数呼び出しを表す文字列があります。

settings.functionName + '(' + t.parentNode.id + ')'

この文字列を eval を使用せずに実際の関数呼び出しに変換したいと考えています。

解決策

eval を使用する代わりに、次のコードを使用できます。

var fn = window[settings.functionName];
if(typeof fn === 'function') {
    fn(t.parentNode.id);
}

このコード:

  1. グローバル ウィンドウ オブジェクトにアクセスし、settings.functionName プロパティをキーとして使用して、関数への参照を取得します。
  2. 取得された値は関数です。
  3. 関数の場合は、必要な引数を指定して呼び出します。

次の設定オブジェクトを考えます:

/* 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。