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

 2023-09-18 阅读 22 评论 0

摘要:枚举类型 枚举类型是一种类型,是值的有限集合。如果值定义为这个类型为可列出的(可枚举的)的。 为一个构造函数enumeration 实现enumeration对于类的加工的函数 思路,这个和工厂类不一样的地方在于是对其函数直接更改,注意返回值是函数本身

枚举类型

枚举类型是一种类型,是值的有限集合。如果值定义为这个类型为可列出的(可枚举的)的。
为一个构造函数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;
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/74764.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息