是否可以創建一個JavaScript 函數,其名稱在運行時確定,而不使用eval 或非常規的引擎特定功能?是的,現在 ECMAScript 2015 (ES6) 及更高版本可以實現這一點。
在 ES6 中,指派給物件屬性的匿名函數表達式採用該名稱財產。這可以與計算屬性名稱組合來命名函數,而無需使用 new Function 或 eval。例如:
const dynamicName = "foo" Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
這將建立一個名為「foo###」的函數,其中 ### 是一個隨機的 1-3 位數。
函數的 name 屬性將反映動態名稱。上面程式碼片段中的相容性說明指的是 Edge 和 Safari 目前不在堆疊追蹤中顯示名稱。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3