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 页面执行时间计算代码
Mar 04 Javascript
javascript 处理事件绑定的一些兼容写法
Dec 24 Javascript
JQuery将文本转化成JSON对象需要注意的问题
May 09 Javascript
JS实现标签页效果(配合css)
Apr 03 Javascript
window.location.href中url中数据量太大时的解决方法
Dec 23 Javascript
Jquery给基本控件的取值、赋值示例
May 23 Javascript
JS实现很酷的EMAIL地址添加功能实例
Feb 28 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
JavaScript代码生成PDF文件的方法
Feb 26 Javascript
html5 canvas 详细使用教程
Jan 20 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
Feb 21 Javascript
详解extract-text-webpack-plugin 的使用及安装
Jun 12 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
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
Javascript 汉字字节判断
2009/08/01 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
Python编程中装饰器的使用示例解析
2016/06/20 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
公务员更新知识培训实施方案
2014/03/31 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书
2015年防汛工作总结
2015/05/15 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
学生会自荐信
2019/05/16 职场文书
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
Python如何让字典保持有序排列
2022/04/29 Python