美文网首页
ES6实现枚举类

ES6实现枚举类

作者: W北落师门W | 来源:发表于2018-09-03 22:11 被阅读0次

因为实际业务中有需求,利用ES6实现了一个枚举类,可以实现A.B.name的使用需求

class EsEnum {
    constructor(arr) {
        let typeArr = [];

        if (!Array.isArray(arr)){
            throw 'arr is not an array!';
            return;
        }

        arr.map(element => {
            if(!element.code || !element.name) {
                return;
            }
            // 保存code值组成的数组,方便A.getName(name)类型的调用
            typeArr.push(element.code);
            // 根据code生成不同属性值,以便A.B.name类型的调用
            this[element.code] = element;
        });
        
        // 保存源数组
        this.arr = arr; 
        this.typeArr = typeArr;
    }

    // 根据code得到对象
    valueOf(code) {
        return this.arr[this.typeArr.indexOf(code)];
    }

    // 根据code获取name值
    getNameByCode(code){
        let prop = this.valueOf(code);
        if (!prop){
            throw 'No enum constant'  + code;
            return;
        }

        return prop.name;
    }

    // 返回源数组
    getValues() {
        return this.arr;
    }
}

export default EsEnum;

使用方式

const ResourceStatusEnum = new EsEnum([
    {code: 'WAIT_APPROVE', name: "未审核"},
    {code: 'ENABLED', name: '启用'},
    {code: 'REFUSED', name: '审核未通过'},
    {code: 'DISABLED', name: '停用'}
]);

console.log(ResourceStatusEnum.ENABLED.name);  // 启用
console.log(ResourceStatusEnum.getNameByCode('ENABLED'));  //启用
console.log(ResourceStatusEnum.getValues());
/*
[ { code: 'WAIT_APPROVE', name: '未审核' },
  { code: 'ENABLED', name: '启用' },
  { code: 'REFUSED', name: '审核未通过' },
  { code: 'DISABLED', name: '停用' } ]
*/

博客地址 北落师门

相关文章

  • ES6实现枚举类

    因为实际业务中有需求,利用ES6实现了一个枚举类,可以实现A.B.name的使用需求 使用方式 博客地址 北落师门

  • 8.枚举和注解

    一、枚举 枚举的二种实现方式: 自定义类实现枚举 使用 enum 关键字实现枚举 自定义类实现枚举: 不需要提供s...

  • Java篇-枚举的使用

    一 : 自定义枚举类 枚举类调用 二 : 使用enum关键字定义枚举类 让枚举类实现接口: 可以让不同的枚举类的对...

  • 枚举--java24(02/17/2016)

    如何自定义枚举类如何使用enum定义枚举类、枚举类的主要方法实现接口的枚举类 JDK1.5之前需要自定义枚举类JD...

  • Java基础15:深入剖析Java枚举类

    本文介绍了枚举类的基本概念,使用方法,以及底层实现原理。帮助你更好地使用枚举类并且理解枚举类的内部实现细节。 具体...

  • Android枚举实现Parcelable接口

    枚举类实现Parcelable的写法如下: 当枚举类为一个类的成员变量,并且该类也要实现Parcelable接口时...

  • 枚举

    一、概念: 实例有限而且固定的类,在java里被称为枚举类。 二、通过enum实现枚举类 使用enum定义的枚举类...

  • Kotlin 枚举类

    枚举类最基本的用法是实现一个类型安全的枚举。枚举常量用逗号分隔,每个枚举常量都是一个对象。 相关属性、方法 枚举类...

  • 单例模式

    饿汉 双检索 枚举 根据枚举的实现原理是是继承enum接口的类,每个元素是static final的,所以枚举实现...

  • Java Enum的七种用法

    枚举 枚举是由class来实现的(继承Enum类,所以不能再继承其他类,也不能被继承,但是可用来实现接口)。因此由...

网友评论

      本文标题:ES6实现枚举类

      本文链接:https://www.haomeiwen.com/subject/umxwwftx.html