使用運行時確定的名稱建立函數(不含Eval)
在JavaScript 中,使用運行時確定的名稱建立函數在ECMAScript 2015 中是可行的後來,利用兩個關鍵功能:匿名函數表達式和計算屬性
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中文網其他相關文章!