文字列名を使用した JavaScript 関数の実行
JavaScript では、文字列名で関数を実行する必要がある状況が発生することがあります。これは特定のコンテキストでは便利ですが、慎重に扱うことが重要です。
eval を避ける:
できる限り eval 関数の使用を避けることを強くお勧めします。セキュリティの脆弱性が生じ、コードの保守が困難になります。
直接アクセス:
グローバル スコープで定義された関数の場合、ウィンドウ表記を使用して直接アクセスできます:
window["functionName"](arguments);
入れ子関数アクセス:
ただし、名前空間関数 (例: MyNamespace.functionName) にアクセスするには、変更されたアプローチ:
window["MyNamespace"]["functionName"](arguments);
コンビニエンス関数:
プロセスを簡略化するために、ネストされた関数とコンテキストの両方を処理するコンビニエンス関数を作成できます:
function executeFunctionByName(functionName, context /*, args */) { // Prepare arguments var args = Array.prototype.slice.call(arguments, 2); // Split function name by namespace var namespaces = functionName.split("."); var func = namespaces.pop(); // Iterate through namespaces and retrieve context for (var i = 0; i < namespaces.length; i++) { context = context[namespaces[i]]; } // Execute function return context[func].apply(context, args); }
使用法:
次のことができます次に、次のように関数を呼び出します。
executeFunctionByName("MyNamespace.functionName", window, arguments);
このメソッドには柔軟性があり、必要に応じて別のコンテキストを渡すことができます。
以上が文字列名を使用して JavaScript 関数を安全に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。