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 相关文章推荐
在jquery中处理带有命名空间的XML数据
Jun 13 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
jQuery事件绑定与解除绑定实现方法
Apr 15 Javascript
Java中Timer的用法详解
Oct 21 Javascript
js 自带的 map() 方法全面了解
Aug 16 Javascript
Angularjs实现mvvm式的选项卡示例代码
Sep 08 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
div中文字内容溢出常见的解决方法
Mar 16 Javascript
vue-cli3.0 环境变量与模式配置方法
Nov 08 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 Javascript
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
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数组实例总结与说明
2011/08/23 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
2014年导购员工作总结
2014/11/18 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
员工辞职信范文
2015/03/02 职场文书
企业承诺书格式范文
2015/04/28 职场文书
逃课检讨书范文
2015/05/06 职场文书
公司的力量观后感
2015/06/05 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
素质教育学习心得体会
2016/01/19 职场文书
DIY胆机必读:各国电子管评价
2022/04/06 无线电