JavaScript で動的名を持つ関数を作成する
eval や非標準の JavaScript 機能に頼らずに、関数に実際の名前を動的に割り当てることはできますか?この疑問は、デバッグ コンテキストで識別可能な名前を持つ関数を探すときに発生します。
ECMAScript 2015 以降 (ES6) のソリューション
ES2015 ではソリューションが導入されています。無名関数式をオブジェクト プロパティに割り当てると、関数にそのプロパティの名前が与えられます。これを計算されたプロパティ名と組み合わせることで、Function コンストラクターや eval に依存せずに関数に名前を付けることができます。
ES2015 では、次のコード スニペットは動的な名前を持つ関数を作成します。
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
関数の名前は、name プロパティを通じて取得することも、エラー スタック トレースで観察することもできます:
console.log("Function's `name` property: " + f.name + " (see compatibility note)"); try { f(); } catch (e) { console.log(e.stack); }
特定のブラウザーでは注意してください。スタック トレースに名前が表示されない場合があります。
以上が「eval」や非標準機能を使用せずに、JavaScript 関数に動的に名前を付けることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。