javascript類比枚舉的簡單一實例

來源:互聯網
上載者:User

如下,我們來定義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'

}
}
}

測試結果如:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.