首页 > 其他分享 >Js中的枚举

Js中的枚举

时间:2022-08-17 16:47:40浏览次数:68  
标签:NODE Node Js 枚举 WeekDay var DOCUMENT

在JavaScript目前的版本中,没有枚举这个概念(当然,ECMA-262第三版中已经将enum作为关键字保留)。
然而,如同JavaScript中没有class一样,但我们仍然可以通过间接的方式——JSON来实现它。

  如下,我们来定义Week的枚举:
        if(typeof WeekDay == "undefined"){
            var WeekDay = {};
            WeekDay.Sunday = 0;
            WeekDay.Monday = 1;
            WeekDay.Tuesday = 2;
            WeekDay.Wedesay = 3;
            WeekDay.Thursday = 4;
            WeekDay.Friday = 5;
            WeekDay.Saturday = 6;
        }
  测试如下:
            alert(WeekDay.Monday);  // -----> Output: 1

 
  当然,我们有更为直观的方式。以定义DOM文档节点类型为例,定义方式如下:
        if(typeof Node == "undefined"){
            var Node = {
                ELEMENT_NODE: 1,
                ATTRIBUTE_NODE: 2,
                TEXT_NODE: 3,
                CDATA_SECTION_NODE: 4,
                ENTITY_REFERENCE_NODE: 5,
                ENTITY_NODE: 6,
                PROCESSING_INSTRUCTION_NODE: 7,
                COMMENT_NODE: 8,
                DOCUMENT_NODE: 9,
                DOCUMENT_TYPE_NODE: 10,
                DOCUMENT_FRAGEMENT_NODE: 11,
                NOTATION_NODE: 12
            }
        }

   

    测试如下:

       alert(document.nodeType == Node.DOCUMENT_NODE);  // -----> Output: true


    说明,以上Node定义可作为纠正IE不支持DOM节点类型常量用(其他主流浏览器均支持)。


  与类C语言类似,以上2个例子的枚举对应属性值均为整形。你可能想到,难道还能定义成别的类型?

   要回答这个问题,得先知道咱们这个枚举实现的原理。前面说到,这里是用JSON来实现的,而JSON可以使用任何类型的值!

   所以,Js中的枚举可以是任何类型的值。以下以String类型为例:



        if(typeof Color == "undefined"){
            var Color = {
                Color1: 'red',
                Color2: 'green',
                Color3: 'white',
                Color4: 'black'
            }
        }

 

  测试如下:

        alert(Color.Color1);  // -----> Output: red

  以更为复杂的类型来定义一个PersonList枚举如下:



        if(typeof PersonList == "undefined"){
            var PersonList = {
                ZhangSan: {
                    Id: 1,
                    Name: 'ZhangSan',
                    Gender: 'man'
                },
                LiSi: {
                    Id: 2,
                    Name: 'LiSi',
                    Gender: 'woman'
                },
                ZhaoWu: {
                    Id: 3,
                    Name: 'ZhaoWu',
                    Gender: 'man'
                }
            }
        }

 

标签:NODE,Node,Js,枚举,WeekDay,var,DOCUMENT
From: https://www.cnblogs.com/clark1990/p/16595747.html

相关文章

  • JS判断数组中是否存在某个值或者某个对象的值
    、判断是否存在某个值1、Array.prototype.indexOf()indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。constbeasts=['ant','......
  • Nodejs 多进程与多线程
    为什么要使用多进程多进程与多线程介绍Nodejs多进程和多线程使用与区别cluster为什么需要多进程nodejs单线程,在处理http请求的时候一个错误都会导致进程退出,这是灾......
  • 记录:excel导入导出js-xlsx,处理合并
    效果前情提要后端传excel坐标数据,前端自己处理模板,找资料后,选择直接载入xlsx方式。准备工作npmixlsximport*asXLSXfrom'xlsx'导入提取数据letreader......
  • [JSOI2007] 字串加密
    题链:luoguJS同学?Description让JS同学对环形字符串进行重组加密。加密规则是:列出\(n\)个字符串并字典序升序,一次取末尾字符作为加密后的长度为\(n\)的密码串。......
  • 原生get请求读取本地json文件,electron vue
    1readLocalFile(fileUrl){2letxhr=null3if(window.XMLHttpRequest){4xhr=newXMLHttpRequest()5}else{6/......
  • JSP内置对象、MVC开发模式
    JSP内置对象内置对象:在jsp页面中不需要创建,直接使用对象变量名  真实类型  作用*pagecontext......
  • JSP指令导入标签库、JSP指令导入注释
    JSP指令导入标签库includ:页面包含的,导入页面的资源文件ttavlib:导入资源  JSP指令导入注释1,html注释:<!---->:只能注释html代码片段2,......
  • js - 文件名
    js-文件名修改文件名notice只修改文件名称保留文件格式后缀获取文件名称和格式后缀优化版/***@methodgetFileNameandExt*@description获取文件名称和格......
  • 两个jsp之间传递参数
    以下为请求端,用form表单默认传递  接收端用request.getParameter("name")来接收 ......
  • node.js安装过程中遇到的坑
    node.js的安装noide.js的完全卸载node.js的安装一些报错的解决1.node.js的完全卸载第一步:打开系统自带的应用管理器卸载ndoe.js。第二步:删除和node.js相关......