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 相关文章推荐
Tips 带三角可关闭的文字提示
Oct 06 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
Dec 25 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
javascript制作2048游戏
Mar 30 Javascript
jquery使整个div区域可以点击的方法
Jun 24 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
微信小程序url与token设置详解
Sep 26 Javascript
快速解决vue在ios端下点击响应延时的问题
Aug 27 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 Javascript
Javascript三种字符串连接方式及性能比较
May 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_SELF的安全问题
2009/09/05 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python中GIL的使用详解
2018/10/03 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
Django--权限Permissions的例子
2019/08/28 Python
python 画图 图例自由定义方式
2020/04/17 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
打架检讨书300字
2014/02/02 职场文书
五年级音乐教学反思
2014/02/06 职场文书
关于环保的演讲稿
2014/05/10 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
感恩教育观后感
2015/06/17 职场文书
环保宣传语大全
2015/07/13 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书