是否可以创建一个 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 位数字。
函数的名称属性将反映动态名称。上面代码片段中的兼容性说明指的是 Edge 和 Safari 目前在堆栈跟踪中不显示该名称。
以上是您可以在没有'eval”的情况下在 JavaScript 中创建运行时命名的函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!