您好,欢迎访问一九零五行业门户网

javascript模拟枚举的简单实例_javascript技巧

如下,我们来定义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'
}
}
}
测试结果如下图:
其它类似信息

推荐信息