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 性能优化指南 (1)
May 21 Javascript
jquery实现商品拖动选择效果代码(自写)
May 28 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
Mar 21 Javascript
JavaScript返回0-1之间随机数的方法
Apr 06 Javascript
js H5 canvas投篮小游戏
Aug 18 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
react.js 翻页插件实例代码
Jan 19 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
基于jQuery ztree实现表格风格的树状结构
Aug 31 jQuery
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中实现中文字符进制转换原理分析
2011/12/06 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
python递归实现快速排序
2018/08/18 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
python文字转语音的实例代码分析
2019/11/12 Python
Python底层封装实现方法详解
2020/01/22 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
艺术用品:Arteza
2018/11/25 全球购物
什么是Rollback Segment
2013/04/22 面试题
一套Delphi的笔试题二
2013/05/11 面试题
北大青鸟学生求职信
2013/09/24 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
法律专业求职信
2014/05/24 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
法定授权委托证明书
2015/06/18 职场文书