1.forEach
摘自js forEach参数详解,forEach与for循环区别,forEach中如何删除数组元素 - 听风是风 - 博客园
forEach也属于完整遍历数组的方法,并会对数组每项元素执行提供的回调函数。
arr.forEach(function(self,index,arr){},this);
self:数组当前遍历的元素,默认从左往右依次获取数组元素。
index:数组当前元素的索引,第一个元素索引为0,依次类推。
arr:当前遍历的数组。
this:回调函数中this指向。
2.实现forEach
- 每个数组都能调用forEach方法,所以他是挂载在Array类的原型对象上的方法。
- 对传入的参数进行验证,首先自己应该是一个数组对象,验证的方式有三种:Array.isArray()、arr instanceof Array 、 Object.prototype.toString.call ==='[object Array]'
- 最后遍历每个元素,并执行对应的加工方法fn
Array.prototype._forEach = function(fn,_this){
if(typeof fn!='function') throw '需要传入一个函数';
if(!this instanceof Array) throw '需要传入一个数组';
let length = this.length;
for(let i=0;i<length;i++)
{
fn.call(_this,this[i],i,this)
}
}