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 相关文章推荐
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 Javascript
JS OOP包机制,类创建的方法定义
Nov 02 Javascript
详细解读AngularJS中的表单验证编程
Jun 19 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 Javascript
javascript中关于类型判断的一些疑惑小结
Oct 14 Javascript
Vue基础学习之项目整合及优化
Jun 02 Javascript
深入分析jQuery.one() 函数
Jun 03 jQuery
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多进程之pcntl_fork的实例详解
2017/10/15 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
js原型链原理看图说明
2012/07/07 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
生成二维码方法汇总
2014/12/26 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
js里面的变量范围分享
2020/07/18 Javascript
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
opencv实现简单人脸识别
2021/02/19 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python序列化pickle模块使用详解
2020/03/05 Python
numba提升python运行速度的实例方法
2021/01/25 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
升职自荐信范文
2013/10/05 职场文书
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
员工生日会策划方案
2014/06/14 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
2015年药房工作总结
2015/04/25 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers