教你如何判断this指向谁

JavaScript
对于我们刚学习函数的菜鸟来说,this的指向经常让我们头晕目眩。是一个难点。今天小编就把自己学习过程中判断this指向的方法分享给大家。
首先我们要记住,this指向当前执行环境的对象。同一个函数中的this的取值跟调用方法有关,调用方法不同this可能就不同。
其次,判断技巧就是:
如果使用括号调用,查看括号前面是不是函数,如果是,继续查看函数前有没有点,如果有点,this为点前面的变量。
如果是使用函数名.call(this,实参列表)或函数名.apply(this,实参数组)进行调用,就要看情况分析了。因为这里的this指的是为当前调用的函数中的this赋值。
让我们来举例说明一下
先来看一个简单的例子
function foo(){
console.log(this);
}
var obj = {name:“lisa”,age:15}
1.foo(); //foo中的this指向全局环境对象,window/global
2.obj.foo(); //foo中的this指向obj
3. [1,2,3,foo,4]3 // foo中的this指向数组
再来看一个比较复杂的例子
在这里插入图片描述因为myForEach是被arr调用的,括号之前是函数,函数之前有点,所以myForEach函数中的this指向arr。第四行和第五行的this它们都包含在myForEach函数中,所以它们都指向arr。
第十行的this是包含在function(item,i)中的,但是由于这个函数是一个回调函数,它是赋值给handler的,所以要看这个函数this指向谁就得看handler中的this指向谁。而handler是通过.call来调用的,这就是我们说的第二种情况,要看情况分析了。因为.call的第一个this是给handler当中的this赋值的,我们只要知道.call的第一个this指向谁就等同于知道handler的this指向谁。上面我们已经知道.call的第一个this指向的是arr,所以handler的this也指向arr,也就是说第十行的this也指向arr。
希望通过以上我的分析可以给小伙伴们解答疑惑~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值