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实现读取txt文档的脚本
Jul 20 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
Aug 14 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
Dec 19 Javascript
jquery 最简单易用的表单验证插件
Feb 27 Javascript
JQuery下的Live方法和$.browser方法使用代码
Jun 02 Javascript
javascript中的Base64、UTF8编码与解码详解
Mar 18 Javascript
JS获取图片lowsrc属性的方法
Apr 01 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
javaScript中封装的各种写法示例(推荐)
Jul 03 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
Aug 31 Javascript
html实现随机点名器的示例代码
Apr 02 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中Object对象的笔记分享
2011/06/28 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
js图片查看器插件用法示例
2019/06/22 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
Python内置函数的用法实例教程
2014/09/08 Python
Python批量更改文件名的实现方法
2017/10/29 Python
python 字符串只保留汉字的方法
2018/11/16 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
pytorch forward两个参数实例
2020/01/17 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
以下的初始化有什么区别
2013/12/16 面试题
素食餐饮项目创业计划书
2014/02/02 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
大学入学感言
2015/08/01 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书