Enum.js 700 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. class EnumItem{
  2. constructor(object){
  3. for(let key of Object.keys(object)){
  4. this[key] = object[key];
  5. }
  6. }
  7. inspect(){
  8. return `Enum(${this.name}: ${this.value})`;
  9. }
  10. };
  11. class Enum{//??????做什么用的
  12. constructor(object){
  13. this.object = object;
  14. for(let key of Object.keys(object)){
  15. let value = object[key];
  16. if(typeof value === "object"){
  17. value.name = key;
  18. }else{
  19. value = {name: key, value: value};
  20. }
  21. this[key] = new EnumItem(value);
  22. }
  23. }
  24. fromValue(value){
  25. for(let key of Object.keys(this.object)){
  26. if(this[key].value === value){
  27. return this[key];
  28. }
  29. }
  30. throw new Error(`No enum for value: ${value}`);
  31. }
  32. };
  33. export {Enum, EnumItem};