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最新动画教程+iso光盘下载
Jan 22 Javascript
jquery ajax例子返回值详解
Sep 11 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
兼容IE和FF的图片上传前预览js代码
May 28 Javascript
js实现iframe跨页面调用函数的方法
Dec 13 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
javascript实现鼠标点击页面 移动DIV
Dec 02 Javascript
setTimeout学习小结
Feb 08 Javascript
JS ES6中setTimeout函数的执行上下文示例
Apr 27 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
Vue中的组件及路由使用实例代码详解
May 22 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 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中定时计划任务的实现原理
2013/01/08 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python之父谈Python的未来形式
2016/07/01 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
"引用"与指针的区别是什么
2016/09/07 面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
电大会计学自我鉴定
2014/02/06 职场文书
少儿节目主持串词
2014/04/02 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
品德与社会教学反思
2016/02/24 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python