JavaScript中Array函数中的forEach()方法的自定义源码

forEach()有两个参数,一个为回调函数,第二个为this,this参数可以不写,当只有一个参数时,this->window;当有第二个参数时,this->第二个参数。
参数:
回调函数 this:当前回调函数中所指的对象
回调函数:
参数:
item index arr
数组元素 下标 arr

                    item:每次循环所获取的数组元素
                    index:每次循环的数组元素所对应的数组下标
                    arr:当前循环的数组

自定义源码:


	var arr=[1,2,3,4];
	var arr1=[1,2];
	Array.prototype.myForEach=function(){  //声明myForEach()
		if(arguments.length==1 && typeof arguments[0]=='function'){
			for(var i=0;i<this.length;i++){
				arguments[0].call(window,this[i],i,this); //调用回调函数,此处令arguments[0](下面的回调函数)方法的this(71行的this)-->window是因为原函数forEach()中当只有一个参数(回调函数)时,回调函数的this-->window,所以此处是为了还原this指向
				
				//console.log(this);//此处的this指向调用myForEach()方法的arr
			}
		}else if(arguments.length==2){
			//arguments[0]:回调函数
			//arguments[1]:由this指向
			for(var i=0;i<this.length;i++){
				arguments[0].call(arguments[1],this[i],i,this)//调用回调函数,此处令arguments[0](下面的回调函数)方法的this(71行的this)-->arguments[1]是因为原函数forEach()中当第二个参数时,回调函数的this-->第二个参数(arguments[1]),所以此处是为了还原this指向
				//console.log(this);  此处的this指向调用myForEach()方法的arr
			}
		}

	}

	arr.myForEach(function(item,index,arr){ //调用myForEach(),参数为声明回调函数
		console.log(item,index,arr);
		console.log(this);
		
	},[]);

	如何写函数源码:
	1、声明函数
    2、判断参数个数及类型
    3、如何循环执行回调函数
    4、回调函数中的this值指向
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值