【发布时间】:2023-02-10 05:20:46
【问题描述】:
问题
如何将对象属性值设置为它自己的变量名?
例如
例如,创建一个枚举(class AA 内)在 Javascript 中:
class AA {
static Color = {
Red: 'Red',
Green: 'Green',
Blue: 'Blue',
}
}
我必须重复每次都是字符串名称。
有没有更简单的方法来做到这一点,例如:
class AA {
static Color = {
Red: this.currentProperty.name,
Green: this.currentProperty.name,
Blue: this.currentProperty.name,
}
}
要求 (不是强制性的) & cmets
- 请不也做这个复杂的.
- 它不必是一个枚举(——这个主题不仅限于枚举,一个普通的对象就可以)
- 尝试使用ES6+
- 尽量让文档能够将其识别为枚举(可能使用@emun (?<)),(主要用于 Vscode 上的自动完成/类型提示)
- 尽量让调试器能够将其识别为枚举并能够将值视为有意义的字符串
- 我知道有一些枚举库在 github eg 中,不确定它们是否足够好/适合我的风格。
- 我知道使用
Symbol()在枚举上 - 我知道需要进行枚举不变的(私人+吸气剂/
Object.freeze) - 我不认为
Object.keys()可以帮助。
【问题讨论】:
-
为什么不认为
Object.keys()可以提供帮助?我会遍历它们并将每个项目设置为键名。 -
@mykaf 感觉有点麻烦——我认为这并不比:重复字符串/甚至只是创建一个新的
class Enum自己来创建枚举好多少? -
@mykaf 或者,有没有办法在属性内部使用
Object.keys(),比如Red: Object.keys(Color).Red?
标签: javascript enums properties variable-names