基于内置类原型扩展方法
- 使用起来方便,更接近于原生js方法的调用
- 可实现链式操作:操作完成某个方法,返回结果还是当前类的实例,这样就可以继续调用类赋予他的其他方法……
- 千万不要用自己的方法替换内置方法,我们命名的时候最好设置一个前缀
//在数组的原型链上实现数组去重方法
Array.prototype.unique = function unique() {
if(!Array.isArray(this)) throw new TypeError('this is not an array');
return Array.from(new Set(this));
}
let arr = [1, 2, 3, 3, 4, 2, 1, 4, 5, 5, 3, 6];
arr.unique().reverse().push(7);
想把原型上的方法执行
- arr.unique() (this->arr)
- Array.prototype.unique() (this->Array.prototype)
- Array.prototype.unique.call(arr) (this->arr)
- …