【发布时间】:2023-01-03 15:07:00
【问题描述】:
在 JavaScript 中,几乎每个对象都有一个 .name 属性,它是一个字符串,是对象本身的名称。
这在其他一些语言中也存在(例如 C#,您可以使用 nameof 函数来获取对象的名称)。
使用.name 可以使代码更简洁,并且在重命名对象时不易出现不一致。
但是,当我们这样做时,在生产环境中,当代码被构建工具缩小和混淆时,我们的对象名称会发生变化。
例如,考虑这个函数:
const getFullName = () => { }
console.log(getFullName.name) // prints 'getFullName'
现在在生产中这可能变成:
const aH = () => { }
console.log(aH.name) // prints 'aH'
有没有办法保留对象的原始.name?
【问题讨论】:
-
“在 JavaScript 中,几乎每个对象都有一个
.name属性”是绝对不正确的。在核心 JS 对象之外,只有错误和函数有它。 -
此外,according to this article
nameof也不适用于经过混淆处理的 .NET。 -
@AKX,谢谢你纠正我。
标签: javascript