是否可以创建一个 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