ホームページ >ウェブフロントエンド >jsチュートリアル >「eval()」を使用せずに文字列からJavaScript関数を安全に呼び出す方法は?
文字列からの 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 サイトの他の関連記事を参照してください。