反射
JavaScript中能利用 for in 语句实现反射,如:
// 下面这段语句遍历obj对象的所有属性和方法
for (var p in obj) {
if (typeof(obj[p]=="function") {
obj[p](); // 执行函数,也还可以传参数
} else {
alert(obj[p]);
}
}
obj.函数名(参数列表); // 这样执行函数,可以使用下面的反射形式来代替
obj["函数名"](参数列表);
26. 过滤数组的重复值
/**
* 返回没有重复值的新数组,原数组不改变
* @return 返回过滤重复值后的新数组
*
* @example
* var arr = ['a', 'b', 'c', 'd', 'c', null];
* var arr2 = arr.unique(); // arr2 为: ['a', 'b', 'd', 'c', null]
*/
Array.prototype.unique = function() {
var result = [];
// 注意学习此算法
for (var i=0,l=this.length; i<l; i++) {
for (var j=i+1; j<l; j++) {
if (this[i] === this[j]) j = ++i;
}
result.push(this[i]);
}
return result;
};