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 相关文章推荐
js arguments.callee的应用代码
May 07 Javascript
浅谈Javascript面向对象编程
Nov 15 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
js style.display=block显示布局错乱问题的解决方法
Sep 21 Javascript
jQuery的ready方法实现原理分析
Oct 26 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
Oct 28 Javascript
详解layui中的树形关于取值传值问题
Jan 16 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
php结合js实现多条件组合查询
May 28 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
Jun 27 Javascript
vue实现学生信息管理系统
May 30 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
使用php4加速网络传输
2006/10/09 PHP
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php设计模式 Observer(观察者模式)
2011/06/26 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
[原创]图片分页查看
2006/08/28 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python中的错误处理
2016/04/10 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
Python 如何测试文件是否存在
2020/07/31 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
委托书样本
2014/04/02 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
增值税发票丢失证明
2015/06/19 职场文书
2016教师节问候语
2015/11/10 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
高一语文教学反思
2016/02/16 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL