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 相关文章推荐
javascript获取鼠标点击元素对象(示例代码)
Dec 20 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
Sep 01 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
jQuery实现按比例缩放图片的方法
Apr 29 jQuery
vue2.0s中eventBus实现兄弟组件通信的示例代码
Oct 25 Javascript
JavaScript多态与封装实例分析
Jul 27 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 Javascript
深入解析vue 源码目录及构建过程分析
Apr 24 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php foreach、while性能比较
2009/10/15 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python中的filter()函数的用法
2015/04/27 Python
python使用fork实现守护进程的方法
2017/11/16 Python
python的socket编程入门
2018/01/29 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
Python笔记之观察者模式
2019/11/20 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
新奇的小玩意:IWOOT
2016/07/21 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
Java面试笔试题大全
2016/11/23 面试题
女大学生毕业找工作的自我评价
2013/10/03 职场文书
销售顾问的岗位职责
2013/11/13 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
党员岗位承诺书
2014/03/25 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书