枚举结构

通常我们定义的枚举值:

var SizeEnum = {

SMALL: 1,

MEDIUM: 2,

LARGE: 3,

};

使用var mySize = SizeEnum.SMALL;

如果需要包含其他属性,我们可以添加额外的对象

var SizeEnum = {

SMALL: 1,

MEDIUM: 2,

LARGE: 3,

properties: {

1: {name: "small", value: 1, code: "S"},

2: {name: "medium", value: 2, code: "M"},

3: {name: "large", value: 3, code: "L"}

}

};

使用:

var mySize = SizeEnum.MEDIUM;

var myCode = SizeEnum.properties[mySize].code; // myCode == "M"

封装

下面我们进行封装:

/**

* 枚举类

*

* @author harris.xc

* @param props [{key: number|string, value: number|string, ...other}]

* 栗子:

* const StepEnum = new Enum([

* { key: 'STEP1', name: '步骤1', value: 1 },

* { key: 'SETP2', name: '步骤2', value: 2 },

* ]);

*

* @class Enum

*

* @method get(value) 通过value获取当前列的值

* return { key: 'SETP2', name: '步骤2', value: 2 }

*

* @returns {key1: number|string, key2: number|string}

* {

* CREATE: 1,

* APPROVED: 2,

* }

*/

export default class Enum {

/**

* 初始化

* @param {Array} props []

*/

constructor(props = []) {

this.__props = {};

if (props.length) {

props.forEach((element) => {

if (element.key && element.value) {

this[element.key] = element.value;

this.__props[element.value] = element;

} else {

console.error('Enum缺少必要的key或value');

}

});

}

}

/**

* 根据value获取对象值

* @param {string|number} value 状态值

*/

get(value) {

return this.__props[value];

}

/**

* 获取枚举数组

*/

getArray() {

const arr = [];

for (const key in this.__props) {

if (Object.prototype.hasOwnProperty.call(this.__props, key)) {

arr.push(this.__props[key]);

}

}

return arr;

}

}

使用方法:

let SizeEnum = new Enum([

{ key: 'STEP1', name: '步骤1', value: 1 },

{ key: 'SETP2', name: '步骤2', value: 2 }

]);

SizeEnum.STEP1; // 1

SizeEnum.get(SizeEnum.STEP1); // { key: 'STEP1', name: '步骤1', value: 1 }

python中封装一个枚举_JavaScript可扩展枚举封装相关推荐

  1. 如何在 Python 中创建一个简单的神经网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引言 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普 ...

  2. python if语句多个条件-关于函数:如何在python中为一个if语句提供多个条件

    本问题已经有最佳答案,请猛点这里访问. 所以我在用python 3.1.5编写一些代码,这些代码需要有多个条件才能发生某些事情.例子: 1 2 3 4 5def example(arg1, arg2, ...

  3. c++定义一个动态对象数组_如何在Python中自定义一个可被调用的对象实例?

    前言 在关于Python描述符函数的详解三篇中,我们有提到如何基于类创建一个"描述符函数",之所以能够基于类创建这样一个概念,是因为用到了类中的__call__属性,从前述文章中可 ...

  4. python中2d_【IT专家】如何在Python中复制一个2D数组?(复制)

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 如何在 Python 中复制一个 2D 数组? ( 复制 ) 如何在 Python 中复制一个 2D 数组 ?( 复制 )[ 英 ]How to  ...

  5. python 幂运算 整数_在Python中检查一个数字是否是另一个数字的幂

    python 幂运算 整数 To solve this problem simply, we will use the log() function from the math module. The ...

  6. if函数python_关于函数:如何在python中为一个if语句提供多个条件

    本问题已经有最佳答案,请猛点这里访问. 所以我在用python 3.1.5编写一些代码,这些代码需要有多个条件才能发生某些事情.例子: 1 2 3 4 5def example(arg1, arg2, ...

  7. python中定义类的关键字_在Python中,定义一个类使用什么关键字?

    [多选题]技术应用的限制包括 [多选题]关于类和对象,下面说法正确的有? [判断题]温度越高,料液的粘度越小,扩散系数越大,可提高膜通量. [单选题]某企业有10台运货车,已知每台车每运行100小时平 ...

  8. python并发循环_在Python中模拟一个并发循环?

    在Python中模拟一个并发循环? 我需要模拟Python程序中的并发循环.不幸的是,以下简单的代码不起作用:list_of_ints = [ 1, 2, 3 ]iterator = list_of_ ...

  9. python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...

    html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...

最新文章

  1. [转载]TFS测试管理
  2. Docker+Redis镜像的原理以及部署安装(超详解附截图)
  3. python冷知识_python冷知识
  4. who initialize the request for abap.js in SAP UI5
  5. c++ map用法_Python的 5 种高级用法,效率提升没毛病
  6. C# 对轻量级(IoC Container)依赖注入Unity的使用
  7. 解密Arm Neoverse V1 和 Neoverse N2 平台 为下一代基础设施带来计算变革
  8. Python二级笔记(2)
  9. 日期格式转换:String 与 date
  10. 联想陈旭东:我们有工匠精神
  11. html云文件系统,一种HTML5云文件系统
  12. Mahout的taste里的几种相似度计算方法
  13. 《Java设计模式》之代理模式 -Java动态代理(InvocationHandler) -简单实现
  14. unity获取麦克风音量_Unity获取麦克风实现吹气球效果
  15. 不用在PLC内编程,快速实现西门子与欧姆龙、三菱等品牌的PLC之间实时通讯
  16. Docker系列之一:在线安装docker和下载镜像
  17. Python pip安装 win32com模块
  18. java篇-数据库MySQL
  19. dcpb连接mysql_MySQL Cluster 7.3.7+CentOS7集群配置入门 MySQL双管理节点配置入门
  20. 再生龙clonezilla备份系统全过程

热门文章

  1. android9 三星 港版,三星S9官方港版安卓9完整版固件升级更新包:TGY-G9600ZHU4CSE7
  2. ffmpeg libx264_编程小短文:FFmpeg视频画面尺寸调整,必知必会
  3. ubuntu 命令卡住_解决出现无法使用sudo命令情况
  4. 海马苹果助手ipad版_iOS逆向-ipa包重签名及非越狱手机安装多个微信!
  5. SAP UI5 应用开发教程之三十四 - SAP UI5 应用基于设备类型的页面适配功能(Device Adaptation)试读版
  6. 在阿里云 ECS 上试图安装 SAP Commerce Cloud 的 137 错误
  7. SAP Cloud for Customer 2102版本如何使用Key User Tool创建扩展字段 - extension field
  8. Jerry Wang的微信公众号开发系列文章
  9. SAP CRM One Order header数据库表几个和时间戳相关的字段
  10. CRM_ORDER_PR_ASSIGN_SELECT_CB