博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中的枚举
阅读量:5162 次
发布时间:2019-06-13

本文共 2220 字,大约阅读时间需要 7 分钟。

在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'
                }
            }
        }

 

 

转载于:https://www.cnblogs.com/hailexuexi/p/4672666.html

你可能感兴趣的文章
css3 2d转换3d转换以及动画的知识点汇总
查看>>
【Java】使用Eclipse进行远程调试,Linux下开启远程调试
查看>>
对Vue为什么不支持IE8的解释之一
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
求出斐波那契数组
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>