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 相关文章推荐
jquery 应用代码 方便的排序功能
Feb 06 Javascript
javascript中的onkeyup和onkeydown区别介绍
Apr 28 Javascript
Jquery为a标签的href赋值实现代码
May 03 Javascript
jQuery满意度星级评价插件特效代码分享
Aug 19 Javascript
详解javascript的变量与标识符
Jan 04 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
js原生跨域_用script标签的简单实现
Sep 24 Javascript
AngularJS指令与指令之间的交互功能示例
Dec 14 Javascript
js+div+css下拉导航菜单完整代码分享
Dec 28 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
爬虫利器Puppeteer实战
Jan 09 Javascript
layui框架与SSM前后台交互的方法
Sep 12 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中使用Oracle数据库(4)
2006/10/09 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python实现简易内存监控
2018/06/21 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
会计电算化学生个人的自我评价
2014/02/08 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
高考备战决心书
2014/03/11 职场文书
报名委托书
2015/01/29 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
清明节主题班会
2015/08/14 职场文书
初中思想品德教学反思
2016/02/24 职场文书
60句有关成长的名言
2019/09/04 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA