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 instanceof,typeof的区别
Mar 24 Javascript
JQuery防止退格键网页后退的实现代码
Mar 23 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
Nov 13 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
Feb 07 Javascript
Javascript中引用类型传递的知识点小结
Mar 06 Javascript
jQuery表格(Table)基本操作实例分析
Mar 10 Javascript
微信小程序实现页面跳转传值的方法
Oct 12 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
浅谈javascript错误处理
Aug 11 Javascript
JavaScript前端面试扁平数据转tree与tree数据扁平化
Jun 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
一个程序下载的管理程序(二)
2006/10/09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php简单图像创建入门实例
2015/06/10 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
php显示页码分页类的封装
2017/06/08 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
Python图算法实例分析
2016/08/13 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python3处理含有中文的url方法
2018/05/10 Python
python opencv实现运动检测
2018/07/10 Python
提升Python程序性能的7个习惯
2019/04/14 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
python 安装impala包步骤
2020/03/28 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
先进个人事迹材料
2014/01/25 职场文书
室内拓展活动方案
2014/02/13 职场文书
学生个人自我鉴定
2014/03/26 职场文书
大学生就业求职信
2014/06/12 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
详解Python flask的前后端交互
2022/03/31 Python