JavaScript中的枚舉

來源:互聯網
上載者:User

標籤:

在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個例子的枚舉對應屬性值均為整形。你可能想到,難道還能定義成別的類型?

   要回答這個問題,得Crowdsourced Security Testing道咱們這個枚舉實現的原理。前面說到,這裡是用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‘
                }
            }
        }

 

 

JavaScript中的枚舉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.