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算符的优先级介绍
Mar 20 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
Nov 12 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
JavaScript中setMonth()方法的使用详解
Jun 11 Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
Apr 01 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
Jun 16 Javascript
AngularJS ng-app 指令实例详解
Jul 30 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 Javascript
使用vue实现grid-layout功能实例代码
Jan 05 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
详解webpack模块化管理和打包工具
Apr 21 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
人族 TERRAN 概述
2020/03/14 星际争霸
PHP基本语法总结
2014/09/06 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
Python字符串格式化输出方法分析
2016/04/13 Python
python读取几个G的csv文件方法
2019/01/07 Python
python实现浪漫的烟花秀
2019/01/30 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
appium+python adb常用命令分享
2020/03/06 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
大学生社会实践评语
2014/04/25 职场文书
生物科学专业自荐书
2014/06/20 职场文书
班级标语大全
2014/06/21 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
教师工作总结范文2014
2014/11/10 职场文书
个园导游词
2015/02/04 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
MySQL基础(一)
2021/04/05 MySQL
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB