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 相关文章推荐
ExtJS 2.0实用简明教程 之Ext类库简介
Apr 29 Javascript
JavaScript 输入框内容格式验证代码
Feb 11 Javascript
javascript学习笔记(二)数组和对象部分
Sep 30 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
Mar 14 Javascript
javascript表格的渲染组件
Jul 03 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
Nov 24 Javascript
AngularJS中使用HTML5手机摄像头拍照
Feb 22 Javascript
浅谈JavaScript函数的四种存在形态
Jun 08 Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 Javascript
Node实现搜索框进行模糊查询
Jun 28 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+mysql写的留言本
2006/10/09 PHP
IStream与TStream之间的相互转换
2008/08/01 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
Express的路由详解
2015/12/10 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
Python实现点阵字体读取与转换的方法
2019/01/29 Python
python 读取修改pcap包的例子
2019/07/23 Python
python机器学习实现决策树
2019/11/11 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
python 高阶函数简单介绍
2021/02/19 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
C语言笔试题回忆
2015/04/02 面试题
C面试题
2015/10/08 面试题
生产部统计员岗位职责
2014/01/05 职场文书
元旦趣味活动方案
2014/08/22 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书