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数据缓存功能的实现思路及简单模拟
May 27 Javascript
js简单抽奖代码
Jan 16 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
Vue.js第二天学习笔记(vue-router)
Dec 01 Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
浅谈Angular4中常用管道
Sep 27 Javascript
基于jquery实现左右上下移动效果
May 02 jQuery
JavaScript继承定义与用法实践分析
May 28 Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 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
smarty模板判断数组为空的方法
2015/06/10 PHP
5 cool javascript apps
2007/03/24 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python读取LMDB中图像的方法
2018/07/02 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
python代码xml转txt实例
2020/03/10 Python
材料化学应届生求职信
2013/10/09 职场文书
申报职称专业技术个人的自我评价
2013/12/12 职场文书
婚礼司仪主持词
2014/03/14 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android