在 JavaScript 中定义 enum 的首选语法是什么?
毕业设计
1
在 JavaScript 中定义枚举的首选语法是什么?就像是:
my.namespace.ColorEnum = {
RED : 0,
GREEN : 1,
BLUE : 2
}
// later on
if(currentColor == my.namespace.ColorEnum.RED) {
// whatever
}
还是有更可取的?
-
从 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 之类的工具。
-
您可以创建 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"};
发表回复