下面的内容会使对象满足枚举在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 err或s

One way to ensure a stronger degree of type safety (with enums 或 otherwise) is to use a tool like TypeScriptFlow.

Quotes aren't needed but I kept them f或 consistency.

Javascript相关问答推荐

使用redux-toolet DelivercThunks刷新访问令牌

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

从PWA中的内部存储读取文件

按下同意按钮与 puppeteer 师

为什么ngModel不能在最后一个版本的Angular 17上工作?'

从Node JS将对象数组中的数据插入Postgres表

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

material UI按钮组样式props 不反射

400 bad request error posting through node-fetch

JavaScript是否有多个`unfined`?

Puppeteer上每页的useProxy返回的不是函数/构造函数

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

获取';无法解决导入和导入";slick-carousel/slick/slick-theme.css";';错误

如何利用CSS中的隐藏元素实现平滑扩展和防止网格行间隙

使用Document.Evaluate() Select 一个包含撇号的HTML元素

使用自动识别发出信号(&Q)

将范围 Select 器添加到HighChart面积图

Django导入问题,无法导入我的应用程序,但我已在设置中安装了它

P5JS-绘制不重叠的圆

我想为我的Reaction项目在画布上加载图像/视频,图像正在工作,但视频没有