javascript类的实现:
1.集合类
set.js
function Set() {//这设计一个构造函数
this.values = {};//集合数据保存在对象的属性里
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.values.hasOwnProperty(str)) {
this.values[str] = val;
this.n++;
}
}
return this;
};
//从集合当中删除元素,元素由参数指定
Set.prototype.remove = function f() {
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 如果没有 则返回false
Set.prototype.contains = function (value) {
return this.values.hasOwnProperty(Set._v2s(value));
}
//返回 结合的大小
Set.prototype.size = function () {
return this.n;
};
//这里声明的是一个内部函数,用来将任意javascript值和唯一的字符串对应起来
Set._v2s = function (val) {
switch (val) {
case undefined:
return 'u';
case null:
return 'u';
case true:
return 't';
case false:
return 'f';
default:
switch (typeof val) {
case 'number':
return '#' + val;
case 'string':
return '""' + val;
default:
return '@' + objectID(val);
}
}
function objectID(o) {
var prop="|**object**|";
if(!o.hasOwnProperty(prop)){
o[prop]=Set._v2s().next++;
return o[prop];
}
}
};
//设置一个初始id的值
Set._v2s.next=100;
送人玫瑰,手留余香。