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 相关文章推荐
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
jscript之Open an Excel Spreadsheet
Jun 13 Javascript
jQuery Autocomplete自动完成插件
Jul 17 Javascript
JS OffsetParent属性深入解析
Jan 13 Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
Angular的$http的ajax的请求操作(推荐)
Jan 10 Javascript
vue实现登录后页面跳转到之前页面
Jan 07 Javascript
浅谈Node.js 子进程与应用场景
Jan 24 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
Jan 27 Javascript
详解如何在vue项目中引入elementUI组件
Feb 11 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的拦截器实例分析
2014/11/03 PHP
php给图片加文字水印
2015/07/31 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
php实现算术验证码功能
2018/12/05 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
jquery实现加载等待效果示例
2013/09/25 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python 专题四 文件基础知识
2017/03/20 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
Python request中文乱码问题解决方案
2020/09/17 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
入党转正申请自我鉴定
2019/06/25 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
关于Python使用turtle库画任意图的问题
2022/04/01 Python
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL