前置知识
数组方法:
- 使用方式
+ 数组.方法名()
1. 重构的方法需要写到 `数组空间` Array.prototype中
2. 重构数组遍历方法 回调函数执行次数需要 根据调用方法的数组决定
- 函数内的this关键字 指向 调用这个方法的数组
注意
我们在全局中直接定义函数,数组无法直接调用,原因是会报错: arr.fn is not a function
数组的API方法都是在 `数组空间`中
- 在这个`数组空间`中的方法,数组都可以直接使用
- 这个 `数组空间` 是 Array.prototype,是一个对象
- 如果我们将自己定义的函数 添加到这个 `数组空间`中
- 那么数组就可以直接调用我们定义的函数了
实现
function myforEach(cb) {
// cb接受传入的回调函数
// 多次执行cb函数---根据arr1数组的长度
// 此处的this关键字指向调用 方法的数组
// 遍历this数组来执行cb函数
for (var i = 0; i < this.length; i++) {
// 调用cb
// cb的第一个参数是数组元素
// cb的第二个参数是数组元素的索引
// cb的第三个参数是原数组(调用方法的数组本身)
cb(this[i],i,this);
}
}
// 将myforEach添加到 `数组空间` 中
Array.prototype.myforEach = myforEach;
// 数组可以直接调用myforEach方法
var arr1 = ['a','b','c'];
arr1.myforEach(function (item,index,arr2) {
console.log( item,index,arr2 )
})
var arr3 = [1,2,3,4,5];
arr3.myforEach(function (item,index,arr2) {
document.write(item);
})