JavaScript中的枚举

2016-02-19 15:51 5 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的JavaScript中的枚举,手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - Web开发 】

在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文档节点类型为例,定义方式如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  测试如下:

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


  测试结果如下图:

来源:http://www.tulaoshi.com/n/20160219/1610551.html

延伸阅读
标签: Web开发
anchors[]; links[]; Link 连接对象 用法:document.anchors[[x]]; document.links[[x]]; anchorId; linkId document.anchors 是一个数组,包含了文档中所有锚标记(包含 name 属性的a标记),按照在文档中的次序,从 0 开始给每个锚标记定义了一个下标。 document.links&nb...
1 第一次发现JavaScript中replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符.   2 而str.replace(/\-/g,"!")则可以替换掉全部匹配的字符(g为全局标志)。  3  4  5 replace()   6 The replace() method returns the string that r...
标签: Web开发
在很多语言的学习中,“事件”都是一个比较难理解,但是又是一个很重要的概念。javascript中的事件处理也是一样,正因为有了事件处理,才会出现Ajax拖动的效果。本文就讨论一下JavaScript中的事件处理,读过之后,您就会知道,很多Ajax框架实现拖动效果的原理了。 一、 IE Event对象 (一)IE Event对象的主要属性和方法 在IE中有一...
标签: Web开发
Javascrip中的布尔类型是很有趣的,最起码从C#这种强类型语言的角度来说; 首先,用来判断是true还是false,不仅是要用true或false,好像任何对象都可以用来做为布尔判断,是不是有种“天地万物都为我所用”的成就感,上网查查了,从别处抄来总结如下: 1、所有对象都被认为是 true。 2、字符串当且仅当为空(""或'...
标签: Web开发
许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符转义,即,将反斜杠字符 (\) 放在它们前面。下表列出了特殊字符以及它们的含义: 特殊字符表 特殊字符 注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n 或 \r 前面的位置。若要匹...

经验教程

549

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部