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 相关文章推荐
input的focus方法使用
Mar 13 Javascript
javascript代码运行不出来执行错误的可能情况整理
Oct 18 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
Feb 02 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
快速掌握Node.js事件驱动模型
Mar 21 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
JS中input表单隐藏域及其使用方法
Feb 13 Javascript
浅谈在node.js进入文件目录的问题
May 13 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 Javascript
vue+iview实现文件上传
Nov 17 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
PHP实现的购物车类实例
2015/06/17 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
json 实例详细说明教程
2009/10/31 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
vue的for循环使用方法
2019/02/12 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
Python中下划线的使用方法
2015/03/27 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
区分python中的进程与线程
2020/08/13 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
大学生毕业的自我鉴定
2013/11/13 职场文书
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
仓管员岗位职责
2015/02/03 职场文书
学校教学工作总结2015
2015/05/19 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS