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

   

    测试以下:node

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

 
 

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

 
 

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

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

   因此,Js中的枚举能够是任何类型的值。如下以String类型为例:blog

 
 

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

  测试以下:文档

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

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

 
 

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

相关文章
相关标签/搜索