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 页面 Mask实现代码
Jan 09 Javascript
jquery选择器需要注意的问题
Nov 26 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
JavaScript原生对象之String对象的属性和方法详解
Mar 13 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
Jun 08 Javascript
获取jqGrid中选择的行的数据
Nov 30 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
Feb 27 Javascript
JavaScript中使用参数个数实现重载功能
Sep 01 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
JavaScript实现拖拽盒子效果
Feb 06 Javascript
Vue scoped及deep使用方法解析
Aug 01 Javascript
openlayers4实现点动态扩散
Aug 17 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/12/04 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
Sublime开发python程序的示例代码
2018/01/24 Python
简单实现python数独游戏
2018/03/30 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
python mysql中in参数化说明
2020/06/05 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
自考毕业自我鉴定
2014/03/18 职场文书
企业安全标语
2014/06/07 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
预备党员转正材料
2014/12/19 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
车间安全生产管理制度
2015/08/06 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL