在 JavaScript 中定义 enum 的首选语法是什么?

毕设项目助手 毕业设计 1

在 JavaScript 中定义枚举的首选语法是什么?就像是:

my.namespace.ColorEnum = {
    RED : 0,
    GREEN : 1,
    BLUE : 2
}

// later on

if(currentColor == my.namespace.ColorEnum.RED) {
   // whatever
}

还是有更可取的?

回复

共2条回复 我来回复
  • 源码项目助手
    这个人很懒,什么都没有留下~
    评论

    从 1.8.5 开始可以密封和冻结对象,因此将上述定义为:

    var DaysEnum = Object.freeze({"monday":1, "tuesday":2, "wednesday":3, ...})
    

    或者

    var DaysEnum = {"monday":1, "tuesday":2, "wednesday":3, ...}
    Object.freeze(DaysEnum)
    

    但是,这并不能阻止您将不需要的值分配给变量,这通常是枚举的主要目标:

    let day = DaysEnum.tuesday
    day = 298832342 // goes through without any errors
    

    确保更高程度的类型安全(使用枚举或其他方式)的一种方法是使用 TypeScript Flow 之类的工具。

    0条评论
  • 源码驿站
    这个人很懒,什么都没有留下~
    评论

    您可以创建 values 对象

    var SIZE = {
      SMALL : {value: 0, name: "Small", code: "S"}, 
      MEDIUM: {value: 1, name: "Medium", code: "M"}, 
      LARGE : {value: 2, name: "Large", code: "L"}
    };
    
    var currentSize = SIZE.MEDIUM;
    if (currentSize == SIZE.MEDIUM) {
      // this alerts: "1: Medium"
      alert(currentSize.value + ": " + currentSize.name);
    }
    

    在 Javascript 中,由于它是一种动态语言,因此甚至可以稍后将枚举值添加到集合中:

    // Add EXTRALARGE size
    SIZE.EXTRALARGE = {value: 3, name: "Extra Large", code: "XL"};
    
    0条评论

发表回复

登录后才能评论