枚举类型的实现
new Enum(['madoka', 'homura']).madoka
// => 0
new Enum(['madoka', 'homura'])[0]
// => 'madoka'
new Enum(['madoka', 'homura'], 3).madoka
// => 3
new Enum(['madoka', 'homura'], 3)[3]
// => 'madoka'
new Enum({ madoka: 3, homura: 0, mami: 2 })
new Enum({ 2: 'mami', 3: 'madoka', 0: 'homura' })
const MahouShoujos = new Enum({ madoka: 3, homura: 0, mami: 2 })
Enum.listIndex(MahouShoujos)
// => [0, 2, 3]
Enum.listValue(MahouShoujos)
// => ['homura', 'mami', 'madoka']
这一功能主要用于使代码编辑器提供正确的语法提示
const MahouShoujos = { madoka: 3, homura: 0, mami: 2 }
Enum.transToEnum(MahouShoujos1)
MahouShoujos[3]
// => 'madoka'
MahouShoujos1 instanceof Enum
// => true
es6编写,没有依赖,但使用时需进行 babel 转码