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 相关文章推荐
AngularJs Dependency Injection(DI,依赖注入)
Sep 02 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
Dec 29 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
Jan 13 Javascript
Vue.js手风琴菜单组件开发实例
May 16 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
vue2.0+koa2+mongodb实现注册登录
Apr 10 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
Jan 24 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
微信小程序如何再次获取用户授权的方法
May 10 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
Aug 22 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
php常用的工具开发整理
2019/09/26 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
Python中如何获取类属性的列表
2016/12/26 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
Python的多维空数组赋值方法
2018/04/13 Python
简单谈谈python基本数据类型
2018/09/26 Python
Python简易版停车管理系统
2019/08/12 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Django视图扩展类知识点详解
2019/10/25 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
化验室技术员岗位职责
2013/12/24 职场文书
教师自我反思材料
2014/02/14 职场文书
工作建议书范文
2014/05/13 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS