var Hash = { //定义一个对象叫Hash
pair: function() { //定义pair方法
if (arguments.length % 2 != 0) { //arguments是包含所有参数的数组,本身就存在,如果参数的个数余2不等于0,抛异常
_throw('Hash.pair: expecting an even number of arguments');
}
var obj = {}; //定义一个obj对象
for (var i = 0; i < arguments.length; i += 2) { //循环遍历所有参数
var key = arguments[i];
var val = arguments[i + 1];
obj[key] = val; //把obj对象中的key属性赋值为val
}
return obj; //返回obj对象
}, drop: function(obj, key) { //定义drop方法
delete obj[key]; //删除obj对明中的属性key
}, drop_fully: function(obj, key) { //定义drop_fully方法
if (bt.ie) { //这句不知道是什么意思
var copy = {}; //定义copy对象
for (var temp in obj) { //遍历obj对象中的所有属性
if (key != temp) copy[temp] = obj[temp]; //如果不是所要求的属性,则赋值到copy对象中
}
return copy; //返回copy对象
} else {
delete obj[key]; //删除obj对象中的属性key
return obj; //返回obj对象
}
}, size: function(obj) { //定义size方法
var size = 0; //定义一个变量size为0
for (var key in obj) { //遍历obj中的所有属性
if (obj[key] != null) size++; //如果属性不为null,size加1
}
return size; //返回size
}, keys: function(obj) { //定义keys方法
var keys = []; //定义一个数组keys
for (var key in obj) { //遍历对象obj
keys.push(key); //将每一个属性名都加到数组keys中
}
return keys; //返回数组keys
}, values: function(obj) { //定义values方法
var vals = []; //定义一个数组vals
for (var key in obj) { //遍历对象obj
vals.push(obj[key]); //将属性加至vals中
}
return vals;
}, num_keys: function(obj) { //定义num_keys方法
var keys = []; //定义数组keys
for (var key in obj) { //遍历obj中的所有属性
keys.push(parseInt(key)); //将属性名转换成int型后加至keys中
}
return keys;
}, copy: function(obj) { //定义copy方法
var copy = {}; //定义一个对象copy
for (var key in obj) { //遍历obj
copy[key] = obj[key]; //将obj中所有属性赋值给copy对象
}
return copy; //返回对象copy
}, getn: function(obj, keys) { //定义getn方法
if (obj == null) { //如果对象为null,返回null
return null;
}
if (keys == '') { //如果keys为'',返回空数组
return [];
}
keys = keys.split(' '); //将keys以' '来分隔成数组
var vals = [];
for (var i = 0; i < keys.length; i++) {
var key = keys[i]; //取得keys中的元素
var val = obj[key]; //将对象obj中的属性key赋值给val
vals.push(val); //将val加至数组vals中
}
return vals; //返回数组vals
} };
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货