一句话记住箭头函数的this

本文探讨了JavaScript中箭头函数的this指向问题,通过具体示例解释了箭头函数的this绑定规则,并澄清了一些常见误解。

阮一峰老师在他的文章中说,箭头函数的this就是定义时所在的对象,然后我们的小白同学很Happy的写下了如下代码:

var obj={
    num:1,
    counter:()=>this.num++
}
obj.counter();
console.log(obj.num)
复制代码

他期望的结果是2,然而结果始终是1,问题出现在哪里呢?
问题就在于JS中对于对象没有一个明确的表述,上面小白用字面量方法创建的obj是一个对象,而阮一峰老师文章的对象指的是函数,所以就出现了理解偏差。
箭头函数的this总结起来就一句话:不管在什么情况下,箭头函数的this跟外层function的this一致,外层function的this指向谁,箭头函数的this就指向谁,如果外层不是function则指向window

var obj={
    id:123,
    testFun:function(){
        var a= ()=>console.log(this.id)
        a();
    }
}
//testFun的this指的是obj,则箭头函数的this指向obj。
obj.testFun()  
//testFun的this指向window,箭头函数的this指向window。
obj.testFun.apply(null) 
复制代码

转载于:https://juejin.im/post/5b3c32cee51d4519634f7f4b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值