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 相关文章推荐
showModalDialog模态对话框的使用详解以及浏览器兼容
Jan 11 Javascript
Seajs的学习笔记
Mar 04 Javascript
Underscore源码分析
Dec 30 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
webpack入门必知必会
Jan 16 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
Jun 01 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
vue组件从开发到发布的实现步骤
Nov 11 Javascript
微信小程序常用赋值方法小结
Apr 30 Javascript
Vue 2.0双向绑定原理的实现方法
Oct 23 Javascript
Javascript节流函数throttle和防抖函数debounce
Dec 03 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
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
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
Python装饰器的函数式编程详解
2015/02/27 Python
Python中装饰器高级用法详解
2017/12/25 Python
Python3匿名函数用法示例
2018/07/25 Python
python实现彩色图转换成灰度图
2019/01/15 Python
django 控制页面跳转的例子
2019/08/06 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
给同学的道歉信
2014/01/16 职场文书
后备干部考察材料
2014/02/12 职场文书
房产转让协议书
2014/04/11 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
2016年寒假见闻
2015/10/10 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL