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 简单实现下拉菜单
Jan 14 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
Jul 28 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
Dec 25 Javascript
js实现产品缩略图效果
Mar 10 Javascript
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
vue中echarts3.0自适应的方法
Feb 26 Javascript
JavaScript进制转换实现方法解析
Jan 18 Javascript
简单了解vue 插值表达式Mustache
Jul 22 Javascript
Vue 监听元素前后变化值实例
Jul 29 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 代码规范小结
2012/03/08 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
javascript实现考勤日历功能
2018/11/29 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
python实现随机密码字典生成器示例
2014/04/09 Python
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
python Django模板的使用方法
2016/01/14 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
django之常用命令详解
2016/06/30 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
20年同学聚会邀请函
2014/02/04 职场文书
税务会计岗位职责
2014/02/18 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
小学领导班子对照材料
2014/08/23 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
整改报告怎么写
2014/11/06 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL