不需要Eval 的動態函數建立
問題:是否可以建立一個具有執行時決定名稱的函數不訴諸eval() 並僅使用pure JavaScript?
ECMAScript 2015 的答案:
是的,ES2015 引入了一個解決方案。指派給物件屬性的匿名函數表達式現在繼承屬性名稱作為其函數名稱。這可以與計算屬性名稱結合,允許建立具有動態名稱的函數。
範例:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName]; console.log("Function's `name` property: " + f.name); // Logs: "foo###" (where ### is 1-3 digits)
在 ES2015 中,此方法可確保函數有一個名稱並且它出現在偵錯器的堆疊追蹤中。但請注意,Edge 和 Safari 可能不會在堆疊追蹤中顯示函數名稱。
以上是您可以在 JavaScript 中建立動態命名函數而不使用'eval()”嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!