箭头函数的this,哪位帮忙给解答下

m0_59014944 2021-12-11 10:51:05

    var age = 21;
    var obj = {
        age:1,
        getAge:function(){
            var fn = () => 2021 - this.age;
            return fn();
        }
    }
    console.log(obj.getAge()); //2020
    var b = obj.getAge;
    console.log(b());  //2000
    //另一种写法就不同了:
    var age = 21;
    var obj = {
        age:1,
        getAge:function(){
            return () => 2021 - this.age;
        }
    }
    console.log(obj.getAge()()); //2020
    var b = obj.getAge();
    console.log(b()); //2020

 

哪位高手给解释下,这个箭头函数的this是怎么改变的?新手上路,多谢!!!

...全文
202 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oliver尹 2021-12-13
  • 打赏
  • 举报
回复

可以看下我以前写的这篇博客,希望对你有所帮助,https://oliver.blog.csdn.net/article/details/106241641

Oliver尹 2021-12-13
  • 举报
回复
@Oliver尹 直接写的就是关于this这个关键字的
羊鳥 2021-12-11
  • 打赏
  • 举报
回复 1

这是this的隐式丢失,改变this指向,函数的方法有call,bind,apply

浪漫革—命 2021-12-11
  • 打赏
  • 举报
回复 3

箭头函数的this与他父级函数this指向相同,第一种写法他父级的函数的执行对象不是obj,this指向window。而第二种写法,你在var b=obj.getAge()的时候,已经执行了父级,且执行对象是obj。所以这时箭头函数的this指向的是obj。

羊鳥 2021-12-11
  • 举报
回复
@浪漫革—命 大佬

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧