枚举类型

枚举类型是一种类型,是值的有限集合。如果值定义为这个类型为可列出的(可枚举的)的。
为一个构造函数enumeration

实现enumeration对于类的加工的函数

思路,这个和工厂类不一样的地方在于是对其函数直接更改,注意返回值是函数本身,由于函数用完即销毁(没有引用)所以对于函数的更改不会影响下一个

/**  enumeration.js文件*  2018年07月20日 02:31*/// 这个函数创建一个新的枚举类型,实参对象表示类的每个实例的名字和值(即传入的是一个集合,该集合是名字和值的键值对)
// 返回值是一个构造函数
// 类似于工厂函数,不过这个工厂函数加工的对象是构造函数
// 这个构造函数会抛出异常:不能使用它来创建该类型的新实例
// 返回构造函数包含名/值对的映射表
// 包括由值组成的数组,以及一个foreach()迭代器函数
function enumeration(namesToValues) {// 这个虚拟构造函数是返回值var enumeration = function(){ throw "can't Instantiate Enumerations"; };// 枚举值继承自这个对象var proto = enumeration.prototype = {constructor: enumeration,   // 说明该函数是由enumeration为原型创建的toString: function(){ return this.name; },  // 返回名字valueOf: function(){ return this.value; },  // 返回值toJSON: function(){ return this.name; },    // 转换为JSON};enumeration.values = [];    // 用来存放枚举对象的数组// 现在创建新类型的实例for (name in namesToValues) {   // for/in循环遍历每个值var e = Object.create(proto)    // 创建一个代表它的对象e.name = name;  // 给他一个名字e.value = namesToValues[name];  // 给他一个值enumeration[name] = e;  // 将它设置为构造函数的属性 enumeration.values.push(e); // 将其储存到值数组中,即保存进上个创建的values的对象中};// 一个类方法,用来对类的实例进行迭代enumeration.foreach = function(f, c) {for(var i = 0; i < this.values.length; i++) f.call(c, this.values[i])   // 每次循环调用};// 返回标识这个新类型的构造函数return enumeration;
}

枚举类型 实现一个enumeration对于类的加工的函数相关推荐

  1. C# 给枚举类型增加一个备注特性

    /// <summary>/// 备注特性/// </summary>public class RemarkAttribute : Attribute{/// <summ ...

  2. JavaScript一个简易枚举类型实现扑克牌

    <script type="text/javascript"> /*** 这个函数创建一个新的枚举类型,实参对象表示类的每个实例的名字和值* 返回值是一个构造函数,它标 ...

  3. python 枚举类型_Python枚举类

    本篇主要介绍Python中枚举类的用法,更多内容请参考:Python学习指南 当我们需要定义常量时,一个办法就是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 · ...

  4. java枚举类构造方法默认是,枚举类型的构造方法_Java语言程

    枚举类型的构造方法_Java语言程 6.6.4 枚举类型的构造方法 枚举类型既然是类,那么就可以有构造方法.只不过只能是私有的(private),不能有公有的(public)构造方法,这是为了避免直接 ...

  5. java枚举类型加入springbean_spring 注入一个以枚举类型对象

    1.枚举 在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的&q ...

  6. C++ Primer 5th笔记(chap 19 特殊工具与技术)枚举类型

    1. 枚举类型(enumeration) 将一组整型常量组织在一起. 1.1 限定作用域 的 枚 举 类 型( scoped enumeration) 关 键 字 enum class ( enum ...

  7. Java枚举类型的使用

    1. 在J2SE5.0中要定义枚举类型是使用enum关键词,枚举类型主要提供一些常数.如下列代码定义了Action枚举类型: 1. 在J2SE5.0中要定义枚举类型是使用enum关键词,枚举类型主要提 ...

  8. JAVA高级特性--自动拆箱-装箱,枚举类型

    基本数据类型转换为引用类型对象 一个自动装箱的例子 Integer i=10;相当于 Integer i=new Integer(10); 一个自动拆箱的例子 Integer m=10;int n=m ...

  9. ef 在此上下文中只支持基本类型或枚举类型_Java 中的 6 颗语法糖

    作者:Java 技术栈来源:SegmentFault 思否社区 原文作者:danchu原文链接:https://blog.csdn.net/danchu/article/details/5498644 ...

最新文章

  1. DirectX10 学习笔记2:在多文档框架中初始化DirectX 10
  2. sql join on 多表连接_SQL 多表查询-交叉连接(笛卡尔积)
  3. sysctl: 深入使用Linux的必经之路
  4. 数据挖掘:基于TF-IDF算法的数据集选取优化
  5. C#-自动(也叫隐式)类型转换及规则 018
  6. Java工作笔记-apache-tomcat-8.5.49及geoserver-2.7.5搭建
  7. Git_自定义Git
  8. mysql shell模式,MySQL Shell 2:连接与模式
  9. Velocity中避免null引起的数据问题
  10. 全民超神服务器维护,全民超神更新维护公告 更新内容详细一览
  11. 基于keras实现多标签分类(multi-label classification)
  12. centos mysql-dev_CentOS7 安装 mysql
  13. 巧用Procexp找出弹窗广告真凶
  14. 国信安web安全——文件上传漏洞
  15. bilibili 弹幕协议分析,golang 还原代码
  16. opencv4.5.2嵌入式移植
  17. BUUCTF:[UTCTF2020]sstv
  18. MATLAB中的左除和右除
  19. 股票交易软件怎么获得数据接口
  20. 设计模式全解析(一)——带你搞懂设计模式

热门文章

  1. ubuntu 安装五笔
  2. MySQL 主从复制 复制过滤
  3. Django 源码阅读
  4. 计算两个日期相差的天数,Calendar用法
  5. DevExpress控件XtraGrid的Master-Detail用法 z
  6. Notepad++中Windows,Unix,Mac三种格式之间的转换(换行符的转换)
  7. 我遇到了Hibernate异常
  8. stella forum v1.2 的初始设计模型
  9. xampp 配置虚拟主机
  10. MVVM架构结合阿里ARouter,打造一套Android-Databinding组件化