怎样用JS模拟实现枚举

 更新时间:2021年04月28日 10:54:57   作者:浅笑·  
这篇文章主要介绍了怎样用JS模拟实现枚举,对枚举感兴趣的同学,可以实验一下

前言

在当前的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)

以上就是怎样用JS模拟实现枚举的详细内容,更多关于JS的资料请关注脚本之家其它相关文章!

相关文章

  • JavaScript剩余操作符Rest Operator详解

    JavaScript剩余操作符Rest Operator详解

    在本篇文章里小编给各位分享的是关于JavaScript剩余操作符Rest Operator知识点用法总结,有需要的朋友们跟着学习下。
    2019-07-07
  • 详解TypeScript的基础类型

    详解TypeScript的基础类型

    这篇文章主要为大家介绍了TypeScript的基础类型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 微信小程序加载机制及运行机制图解

    微信小程序加载机制及运行机制图解

    这篇文章主要介绍了微信小程序加载机制及运行机制图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • js查错流程归纳

    js查错流程归纳

    归纳是为了更好的理解。平时同事有问题找我帮忙解决问题,往往都是很小的问题,这种情况他们并不是缺乏解决问题的知识,而是需要找到问题的办法
    2012-05-05
  • JS判断是否长按某一键的方法

    JS判断是否长按某一键的方法

    这篇文章主要介绍了JS判断是否长按某一键的方法,涉及JavaScript针对键盘按键的判断及响应操作技巧,需要的朋友可以参考下
    2016-03-03
  • Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发

    Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发

    在使用bootstrap制作响应式导航条时,dropdown组件用的比较多,dropdown默认鼠标左键单击才展开,如果使用鼠标放上去(hover)就展开则会省去点击时间,这样能提高效率,下面小编给大家解答下实现思路
    2016-08-08
  • 详解JavaScript中Proxy与Object.defineProperty的区别

    详解JavaScript中Proxy与Object.defineProperty的区别

    Proxy和Object.defineProperty都是JavaScript中用于实现对象属性拦截和代理的机制,但它们在功能和应用方面有一些区别,本文通过代码示例详细介绍了二者的区别,感兴趣的朋友可以参考下
    2023-06-06
  • JavaScript阻止事件冒泡和默认行为的方法举例

    JavaScript阻止事件冒泡和默认行为的方法举例

    JavaScript事件的默认行为指浏览器自动执行的操作,如链接跳转或表单提交,阻止这些行为可以使用event.preventDefault()、return false或event.returnValue属性,event.stopPropagation()用于阻止事件传播,不直接阻止默认行为,需要的朋友可以参考下
    2024-10-10
  • 微信小程序页面传多个参数跳转页面的实现方法

    微信小程序页面传多个参数跳转页面的实现方法

    这篇文章主要介绍了微信小程序页面传多个参数跳转页面的实现方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Web制作验证码功能实例代码

    Web制作验证码功能实例代码

    web开发中,经常会使用验证码功能,例如登录、注册,或其他关键功能之前经常会使用。下面通过实例代码给大家介绍Web制作验证码功能实例代码,感兴趣的朋友一起看看吧
    2017-06-06

最新评论