怎样用JS模拟实现枚举

作者:浅笑· 时间:2024-04-22 12:48:38 

前言

在当前的JavaScript中,并没有枚举这个概念,在某些场景中使用枚举更能保证数据的正确性,减少数据校验过程,下面就介绍一下JavaScript如何模拟实现枚举效果。

枚举主要特点

  • 枚举值不能重复

  • 不能被修改

实现


let days;
(function (days) {
   days[days["Sunday"] = 0] = "Sunday";
   days[days["Monday"] = 1] = "Monday";
   days[days["Tuesday"] = 2] = "Tuesday";
   days[days["Wednesday"] = 3] = "Wednesday";
   days[days["Thursday"] = 4] = "Thursday";
   days[days["Friday"] = 5] = "Friday";
   days[days["Saturday"] = 6] = "Saturday";
})(days || (days = {}));

这个时候days对象基本实现了枚举效果,可以通过枚举值或索引去访问days对象,但枚举有个重要特别是不能被修改,这个时候days是可以随意修改的;可以通过Object.freeze函数让对象不改修改,重新导出一个不可以修改的对象,完整代码如下:


let days;
(function (days) {
   days[days["Monday"] = 1] = "Monday";
   days[days["Tuesday"] = 2] = "Tuesday";
   days[days["Wednesday"] = 3] = "Wednesday";
   days[days["Thursday"] = 4] = "Thursday";
   days[days["Friday"] = 5] = "Friday";
   days[days["Saturday"] = 6] = "Saturday";
   days[days["Sunday"] = 0] = "Sunday";
})(days || (days = {}));

//导出可枚举对象
export EnumWeek = Object.freeze(days)

来源:https://www.cnblogs.com/qianxiaox/p/13744683.html

标签:js,枚举
0
投稿

猜你喜欢

  • python3 循环读取excel文件并写入json操作

    2022-11-07 15:40:11
  • Study jQuery in a Simplified Way

    2010-01-30 12:55:00
  • Python中getservbyport和getservbyname函数的用法大全

    2023-04-14 09:02:38
  • Django之全局使用request.user.username的实例详解

    2021-07-20 20:50:42
  • golang 防缓存击穿singleflight的实现

    2024-05-09 09:55:23
  • JS实现文字放大效果的方法

    2024-04-25 13:09:52
  • 关于Python 中的时间处理包datetime和arrow的方法详解

    2023-11-16 12:18:48
  • Python爬取用户观影数据并分析用户与电影之间的隐藏信息!

    2022-09-09 23:19:47
  • mysql免安装版配置步骤详解分享

    2024-01-22 08:18:07
  • Python EOL while scanning string literal问题解决方法

    2021-01-20 23:58:38
  • GoLang之go build命令的具体使用

    2024-04-27 15:24:56
  • SQL server 视图(view)介绍

    2024-01-19 17:52:06
  • mysql 队列 实现并发读

    2024-01-14 21:16:26
  • 详解Selenium-webdriver绕开反爬虫机制的4种方法

    2023-09-21 03:30:46
  • DjangoRestFramework 使用 simpleJWT 登陆认证完整记录

    2021-03-29 18:34:12
  • sql ROW_NUMBER()与OVER()方法案例详解

    2024-01-12 21:34:32
  • Golang 统计字符串中数字字母数量的实现方法

    2024-04-23 09:43:04
  • 在IE浏览器下面指定表单编码方式

    2009-10-02 16:47:00
  • python深度学习tensorflow安装调试教程

    2021-06-28 23:03:51
  • window.top[_CACHE]实现多个jsp页面共享一个js对象

    2023-07-18 09:25:14
  • asp之家 网络编程 m.aspxhome.com