【问题标题】:How to set an object property value to its own variable name?如何将对象属性值设置为它自己的变量名?
【发布时间】: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


【解决方案1】:

class AA {
  static Color = Object.fromEntries(['Red','Green','Blue'].map(i=>[i,i]))
}
console.log(AA.Color)

【讨论】:

    猜你喜欢
    • 2013-06-30
    • 1970-01-01
    • 2023-03-04
    • 2011-09-02
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多