javascript模拟枚举的简单实例


Posted in Javascript onMarch 06, 2014

如下,我们来定义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'
}
}
}

测试结果如下图:

javascript模拟枚举的简单实例

Javascript 相关文章推荐
mouse_on_title.js
Aug 25 Javascript
javascript parseInt与Number函数的区别
Jan 21 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
基于jQuery实现音乐播放试听列表
Apr 14 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
基于JavaScript表单脚本(详解)
Oct 18 Javascript
node结合swig渲染摸板的方法
Apr 11 Javascript
react-router4按需加载(踩坑填坑)
Jan 06 Javascript
JavaScript数值类型知识汇总
Nov 17 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 Javascript
JS新手入门数组处理的实用方法汇总
Apr 07 Javascript
js模拟C#中List的简单实例
Mar 06 #Javascript
js模拟hashtable的简单实例
Mar 06 #Javascript
JavaScript简单实现鼠标拖动选择功能
Mar 06 #Javascript
用JS在浏览器中创建下载文件
Mar 05 #Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 #Javascript
js写的方法实现上传图片之后查看大图
Mar 05 #Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
Mar 05 #Javascript
You might like
php foreach、while性能比较
2009/10/15 PHP
php实现的SESSION类
2014/12/02 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
php获取excel文件数据
2017/04/21 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
js中this对象用法分析
2018/01/05 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
美容院店长岗位职责
2014/04/08 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
美术教师个人工作总结
2015/02/06 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书