forEach方法的详解:
array.forEach(function(currentValue, index, arr), thisValue);该方法接受两个参数,一个是数组中每个元素需要调用的函数,另一个是该函数内的this指向,如果不传默认是window,传指了就指向该值。
上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组扩展</title>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<script>
// forEach 遍历数组
var personArr = [
{name:'王一',des:'有病',sex:'m'},
{name:'王二',des:'有钱',sex:'f'},
{name:'王三',des:'有才',sex:'f'},
{name:'王四',des:'有病',sex:'m'},
];
//forEach的源码实现
//1.function 2.length 3.function this -> arguments[1]
Array.prototype.myForEach = function(fn){
var _arr = this,len = _arr.length,param2 = arguments[1] || window;
for(var i = 0; i < len; i++){
//ele 对应执行当前次的数据 元素
//index 索引
//self 数组本身
fn.apply(param2,[_arr[i],i,_arr])
}
}
personArr.myForEach(function(ele,index,self){
console.log(ele,index,self,this);
this[index].innerText = ele.name;
},document.getElementsByTagName('li'));
</script>
</body>
</html>