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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
Oct 27 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
JavaScript实现简单的树形菜单效果
Jun 23 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
bootstrap+jquery项目引入文件报错的解决方法
Jan 22 jQuery
JS实现根据数组对象的某一属性排序操作示例
Jan 14 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 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 中使用随机数的三个步骤
2006/10/09 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
php unlink()函数使用教程
2018/07/12 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
零基础小白多久能学会python
2020/06/22 Python
美容院店长岗位职责
2014/04/08 职场文书
旷课检讨书500字
2014/10/14 职场文书
营销计划书范文
2015/01/17 职场文书
紧急通知
2015/04/17 职场文书
贷款担保书范本
2015/09/22 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
Python爬取某拍短视频
2021/06/11 Python