以下是否会使对象满足枚举在 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/