【09类和模块】——6:javascript中的面向对象技术(集合类)
来源:互联网 发布:人工智能和机器人 编辑:程序博客网 时间:2024/06/06 06:46
在这里我会总结一些实际的例子,包括如何利用javascript总的类进行编程
——集合类
集合是一种数据结构,用以表示非重复值的无序集合。集合的基础方法包括添加值和检测值是否在集合中,这种集合需要一种通用的实现,以保证效率。
javascript的对象是属性名以及对应的值的基本集合,因此将对象只用作字符串的集合就大材小用了。
下面的例子实现了一个set类,它实现了从javascript值到唯一字符串的映射,然后将字符串用作属性名。
//Set.js 值得任意集合function Set(){ //这是一个构造函数 this.value={}; //集合数据保存在对象的属性里 this.n=0; //集合中值的个数 this.add.apply(this,arguments) //把所有参数都添加进这个集合}
//将每个参数都添加至集合中Set.prototype.add=function(){ for(var i = 0;i<arguments.length;i++){ var val=arguments[i]; var str=Set._v2s(val); if(!this.hasOwnProperty(str)){ this.values[str]=val; this.n++ } } return this; //支持链式调用}
//从集合删除元素,这些元素有参数指定Set.prototype.remove=function(){ for(var i=0;i<arguments.length;i++){ var str = Set._v2s(arguments[i]); if(this.values.hasOwnProperty(str)){ delete this.values[str]; this n-- } } return this;}
//如果集合中包含这个值就返回true,否则返回falseSet.prototype.contains=function(value){ return this.values.hasOwnProperty(Set._v2s(value));}
//返回集合的大小Set.prototype.size=function(){ return this.n;}
//遍历集合中的所有元素,在指定的上下文中调用fSet.prototype.foreach=function(f,context){ for(var s in this.values){ if(this.values.hasOwnProperty(s)) f.call(context,this.values[s]) }}
下面是一个内部函数,用以将任意javascript值和唯一字符串对应起来
Set._v2s = function(val) { switch(val) { case undefined: return 'u'; //特殊的原始值 case null: return 'n'; //值只有一个字母 case true: return 't'; //代码 default: switch(typeof val) { case 'number': return '#' + val; //数字都带有#前缀 case 'string': return '"' + val; //字符串都带有“前缀 default: return '@' + objectId(val); } function objectId(o) { var prop = "|**objectid**|"; //私有属性,用以存放id if (!o.hasOwnProperty(prop)) //如果对象没有id o[prop] = Set._v2s.next++; //将下一个值赋给它 return o[prop]; //返回这个id } }/*对任意对象来说,都会返回一个字符串针对不同的对象,这个函数会返回不同的字符串对于同一个对象的多次调用,总是返回字符串为了做到这一点,它给o创建一个属性,在ES5中,这个属性是不可枚举且是只读的*/
Set._v2s.next = 100;//设置初始id的值
0 0
- 【09类和模块】——6:javascript中的面向对象技术(集合类)
- JavaScript权威指南_76_第9章_类和模块_9.6-JavaScript中的面向对象技术
- java—面向对象集合类Map
- 【js学习笔记-052】js中的面向对象技术------集合类
- javascript 面向对象 和 javascript 类
- 面向对象的JavaScript——类
- 20-JavaScript-面向对象-类(原型对象) 和 对象(实例)
- 《Java面向对象编程》—Java中的集合
- javascript面向对象技术基础(四)(类、构造函数、原型)
- 面向对象程序设计(C++) 示例程序——集合类
- Java面向对象——集合工具类(Collections)
- JavaScript 中的面向对象
- Javascript中的面向对象!
- Javascript中的面向对象
- JavaScript中的面向对象
- JavaScript中的面向对象
- JavaScript中的面向对象
- javascript中的面向对象
- Git 详解之三 Git分支
- ZSC 1183: 拦截导弹
- Windows 去除打开exe文件安全警告
- android录音功能的实现
- Python 中的除法运算 // 和 /
- 【09类和模块】——6:javascript中的面向对象技术(集合类)
- Linux字符驱动学习之LED
- 针对一个文件夹压缩成zip文件
- 使用clone( )和Cloneable接口
- Centos7 平台中对于scikit安装教程的学习
- BO 要换个HOST-地址
- c++中void指针和const指针浅析
- npoi2.0版本word中插入图片
- 反射在连接数据库的作用