zoukankan      html  css  js  c++  java
  • JavaScript中的枚举

    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'

                    }

                }

            }

    测试结果如下图:

                      

    本文源码下载 

    关于JSON,大家可以参阅:http://en.wikipedia.org/wiki/JSON

  • 相关阅读:
    敲七
    二维指针数组**p
    食物链(待解决)
    蛇行矩阵
    快速排序 QuickSort
    堆排序
    猪的安家
    百度语言翻译机
    HTML <base> 标签
    免费网络管理流量监控软件大比拼
  • 原文地址:https://www.cnblogs.com/Langzi127/p/1432199.html
Copyright © 2011-2022 走看看