<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var arr=[1,2,3,4,5];
// arr.forEach();
Array.prototype.myForEach=function(){
if(arguments.length==1 && typeof(arguments[0]=="function")){
//必须是字符串类型的function,因为typeof的返回值类型是string
//当参数为一个,并且为函数类型时,直接循环调用当前的回调函数,有几个数组项循环几次
//this->arr
for(var i=0;i<this.length;i++){
arguments[0].call(window,this[i],i,this)
}
}else if(arguments.length==2){
//参数为2个,第一个为回调函数,第二个为this值
for(var i=0;i<this.length;i++){
arguments[0].call(arguments[1],this[i],i,this);
}
}
}
arr.myForEach(function(item,index,arr){
console.log(this);
console.log(item,index,arr);
},[]);
</script>
</head>
<body>
</body>
</html>
forEach的底层原理
最新推荐文章于 2023-07-07 23:28:21 发布