javascript - 我如何保证我的枚举定义在 JavaScript 中不会改变?

标签 javascript

以下是否会使对象满足枚举在 JavaScript 中具有的所有特征?像这样的东西:

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

// later on

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

或者有其他方法可以做到这一点吗?

最佳答案

从 1.8.5 开始,可以 seal and freeze the object , 所以将上式定义为:

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

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

瞧! JS 枚举。

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

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

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

不需要引用,但我保留了它们以保持一致性。

关于javascript - 我如何保证我的枚举定义在 JavaScript 中不会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1314187/

相关文章:

javascript - 圆圈、 Canvas 和数学,天哪

javascript - 在删除最后一个左子节点时,我各自的 firebase 表被删除

javascript - jquery ajax不起作用(服务器端是ASP.net)

javascript - Instagram 网络意图允许收藏和评论

javascript - 在使用 testing-library 进行测试时使用 getByRole 时无法获取输入的名称

javascript - CKEditor 小部件忘记了它们是小部件并且变得无用

javascript - NVD3 调度事件不适用于 HistoricalBarChart

javascript - Spotify 网络 API 结果 "undefined"

javascript - 使用 p5.js 在 JavaScript 中未定义的 JSON 属性

javascript - 计算函数在 VueJS 中被调用两次