ホームページ > ウェブフロントエンド > jsチュートリアル > 「eval()」を使用せずに文字列からJavaScript関数を安全に呼び出す方法は?

「eval()」を使用せずに文字列からJavaScript関数を安全に呼び出す方法は?

Mary-Kate Olsen
リリース: 2024-10-29 07:37:30
オリジナル
480 人が閲覧しました

How to Safely Invoke a JavaScript Function from a String Without Using `eval()`?

文字列からの Javascript 関数呼び出しの呼び出し

この質問は、「設定」などの関数呼び出しを表す文字列を変換するという課題に対処します。 .functionName '(' t.parentNode.id ')'" を実際の関数呼び出しに組み込みます。目的は、セキュリティ上の理由から推奨されない eval() を使用せずに、文字列が関数呼び出しとして直接入力されたかのように関数を実行することです。

解決策:

提供されたソリューションは、ウィンドウ オブジェクトを利用して関数への参照を取得する別のアプローチを提案します。更新されたより詳細な説明は次のとおりです:

<code class="javascript">// Store the function name extracted from the string as a variable
var functionName = settings.functionName;

// Check if the function exists in the global scope using window
if (typeof window[functionName] === 'function') {
  // If the function exists, invoke it with the specified argument
  window[functionName](t.parentNode.id);
}</code>
ログイン後にコピー

例:

次の設定オブジェクトを考えてみましょう:

<code class="javascript">window.settings = {
  functionName: 'clickedOnItem',
};</code>
ログイン後にコピー

および次の関数定義:

<code class="javascript">function clickedOnItem(nodeId) {
  // Function body
}</code>
ログイン後にコピー

上記のソリューションを使用すると、次のように t.parentNode.id 引数を指定して clickedOnItem 関数を呼び出すことができます:

<code class="javascript">// Extract the function name from the settings object
var functionName = settings.functionName;

// Check if the function exists in the global scope
if (typeof window[functionName] === 'function') {
  // Invoke the function with the specified argument
  window[functionName](t.parentNode.id);
}</code>
ログイン後にコピー

このメソッドにより、関数を動的に呼び出すことができますeval() に頼ったり、セキュリティを侵害したりすることなく、文字列表現に基づきます。

以上が「eval()」を使用せずに文字列からJavaScript関数を安全に呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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