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 相关文章推荐
使用js获取QueryString的方法小结
Feb 28 Javascript
jQuery表单验证插件formValidator(改进版)
Feb 03 Javascript
jQuery让控件左右移动的三种实现方法
Sep 08 Javascript
JS实现日期加减的方法
Nov 29 Javascript
JS的document.all函数使用示例
Dec 30 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
如何消除inline-block属性带来的标签间间隙
Mar 31 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
ReactNative页面跳转Navigator实现的示例代码
Aug 02 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
详解nvm管理多版本node踩坑
Jul 26 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
php常用的url处理函数总结
2014/11/19 PHP
php中socket通信机制实例详解
2015/01/03 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
python学习之编写查询ip程序
2016/02/27 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
学python安装的软件总结
2019/10/12 Python
Python笔记之facade模式
2019/11/20 Python
Python ORM编程基础示例
2020/02/02 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
部队学习十八大感言
2014/01/11 职场文书
党员干部承诺书范文
2014/03/25 职场文书
办公经费申请报告
2015/05/15 职场文书
养成教育主题班会
2015/08/13 职场文书