javascript实现与后端相同的枚举Enum对象
1 ; 2 (function (global, undefined) { 3 4 global.Enum = function (namesToValues) { 5 var enumeration = function () { 6 throw "can't Instantiate Enumerations"; 7 }; 8 enumeration.setValue = function (x) { 9 var val = null; 10 enumeration.foreach(function (i) { 11 if (i.value == x) { 12 val = enumeration[i.name]; 13 } 14 }, null); 15 return val; 16 }; 17 18 function inherit(superCtor) { 19 var f = function () { 20 }; 21 f.prototype = superCtor; 22 var ctor = function () { 23 }; 24 ctor.prototype = new f(); 25 ctor.prototype.constructor = superCtor.constructor; 26 return new ctor; 27 } 28 29 var proto = enumeration.prototype = { 30 constructor: enumeration, 31 toString: function () { 32 return this.name; 33 }, 34 valueOf: function () { 35 return this.value; 36 }, 37 toJSON: function () { 38 return this.name; 39 } 40 }; 41 42 enumeration.values = []; 43 44 for (name in namesToValues) { 45 var e = inherit(proto); 46 e.name = name; 47 e.value = namesToValues[name]; 48 enumeration[name] = e; 49 enumeration.values.push(e); 50 51 } 52 53 enumeration.foreach = function (f, c) { 54 for (var i = 0; i < this.values.length; i++) { 55 f.call(c, this.values[i]); 56 } 57 }; 58 59 return enumeration; 60 61 }; 62 })(window);
var Qos = window.Enum({ AT_MOST_ONCE: 0, AT_LEAST_ONCE: 1, EXACTLY_ONCE: 2, DEFAULT: 3 });
现在我们打印Qos.AT_MOST_ONCE会现实一个对象,但是当我们进行 Qos.AT_MOST_ONCE==1 比较时为true;而且Qos.setValue(1) 与 Qos.AT_MOST_ONCE相同
Qos.AT_MOST_ONCE.toString() -> 'AT_MOST_ONCE' ; Qos.AT_MOST_ONCE.valueOf() -> 1 ; Qos.AT_MOST_ONCE.name -> 'AT_MOST_ONCE' ; Qos.AT_MOST_ONCE .value -> 1;
好,现在一个特点与后端语言特性相同的Enum对象就此出现了!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具