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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
Mar 10 Javascript
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
javascript之可拖动的iframe效果代码
Aug 01 Javascript
javascript 数组排序函数
Aug 20 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 Javascript
Javascript中的异步编程规范Promises/A详细介绍
Jun 06 Javascript
JQuery中使用ajax传输超大数据的解决方法
Jul 14 Javascript
JavaScript操作select元素和option的实例代码
Jan 29 Javascript
js友好的时间返回函数
Aug 24 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
vue中的inject学习教程
Apr 24 Javascript
Vue切换div显示隐藏,多选,单选代码解析
Jul 14 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循环table实现一行两列显示的方法
2015/06/04 PHP
Java中final关键字详解
2015/08/10 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
js继承的实现代码
2010/08/05 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
javascript运动详解
2015/07/06 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
python删除文件示例分享
2014/01/28 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
python多进程使用函数封装实例
2020/05/02 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
医院安全生产月活动总结
2014/07/05 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python