在 JavaScript 中创建具有动态名称的函数
可以在不诉诸 eval 或非标准 JavaScript 功能的情况下动态为函数分配真实名称吗?在调试上下文中查找具有可识别名称的函数时会出现此问题。
ECMAScript 2015 及更高版本 (ES6) 的解决方案
ES2015 引入了一个解决方案。将匿名函数表达式分配给对象属性可以为函数提供该属性的名称。这与计算属性名称相结合,允许函数命名而不依赖于函数构造函数或 eval。
在 ES2015 中,以下代码片段创建一个具有动态名称的函数:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
The函数的名称可以通过其 name 属性检索或在错误堆栈跟踪中观察:
console.log("Function's `name` property: " + f.name + " (see compatibility note)"); try { f(); } catch (e) { console.log(e.stack); }
请注意,某些浏览器可能不会在堆栈跟踪中显示名称。
以上是您可以在不使用'eval”或非标准功能的情况下动态命名 JavaScript 函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!