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 相关文章推荐
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
javascript call和apply方法
Nov 24 Javascript
JS学习之一个简易的日历控件
Mar 24 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
JS仿Windows开机启动Loading进度条的方法
Feb 26 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 Javascript
vue实现百度下拉列表交互操作示例
Mar 12 Javascript
Vue v-model组件封装(类似弹窗组件)
Jan 08 Javascript
JS XMLHttpRequest原理与使用方法深入详解
Apr 30 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的计数器程序
2006/10/09 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
Java中final关键字详解
2015/08/10 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
如何解决vue在ios微信"复制链接"功能问题
2020/03/26 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
Python中with及contextlib的用法详解
2017/06/08 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
成本会计实训报告
2014/11/05 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书