谈谈关于箭头函数中this的理解

来源:5-6 箭头函数

小姜同学666

2020-03-10 10:21:57


const xiaoming = {
    name:'小明',
    age:null,
    getAge:function(){
        //...ajax
        setTimeout(() => {
          this.age = 14;
          console.log(this);
        },1000);
    }
};
xiaoming.getAge();


先问个问题,类似定时器之类的异步操作都算是在window对象下调用的么?

如果是的话,在箭头函数中的没有原型函数,也就是定时器不知道是window调用的它,所以也就没有this了,箭头函数的this只会找这个定时器上下文的this;而普通函数中定时器知道自己是被window调用的,所以是window的this。这样理解对么老师

写回答

1回答

好帮手慕夭夭

2020-03-10

同学你好,理解的不对。参考如下理解:

1.定时器是谁调用的与定时器中使用普通函数和箭头函数无关。即定时器就是window调用的。

2.这里只需要区分使用普通函数和箭头函数的区别。

普通函数中,谁调用了函数,this指向谁。由于window调用了定时器,所以this执行window。

箭头函数中的this是在函数创建时就会绑定,例如本代码中,定时器是在getAge方法中创建的,所以它里面的this绑定的就是getAge方法中的this。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 10739 问题

查看课程