実行時に決定される名前を持つ関数の作成 (Eval なし)
JavaScript では、実行時に決定される名前を持つ関数の作成が ECMAScript 2015 で実現可能です。以降は、匿名関数式と計算プロパティという 2 つの重要な機能を利用します。 names.
ES2015 の解決策:
ES2015 では、オブジェクト プロパティに割り当てられた匿名関数式は、そのプロパティの名前を継承します。これにより、次のことが可能になります。
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName]; // Demonstrate function's name property console.log("Function's `name` property: " + f.name); // Exception handling reveals the name in stack traces try { f(); } catch (e) { console.log(e.stack); }
このコードでは、
互換性に関する注意:
最新のブラウザーはすべてこの機能を実装していますが、Edge と Safari は割り当てられた名前をスタック トレースに表示しないことに注意してください。
以上がJavaScript で実行時に決定される名前を持つ関数を作成する方法 (Eval なし)?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。