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

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

Mary-Kate Olsen
リリース: 2024-11-02 06:22:02
オリジナル
777 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート