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 相关文章推荐
node.js中使用node-schedule实现定时任务实例
Jun 03 Javascript
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
javascript下使用Promise封装FileReader
Feb 19 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
JavaScript手机振动API
Jun 11 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
vue-resource 拦截器使用详解
Feb 21 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
Sep 29 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 Javascript
如何测量vue应用运行时的性能
Jun 21 Javascript
序列化模块json代码实例详解
Mar 03 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更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
Python导入模块时遇到的错误分析
2017/08/30 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
python中eval与int的区别浅析
2019/08/11 Python
django创建超级用户过程解析
2019/09/18 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
网络书店创业计划书
2014/02/07 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
担保书范文
2015/01/20 职场文书
用人单位聘用意向书
2015/05/11 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫