一、箭头函数的this指向问题
- 先看下面代码,如果你能给出正确答案,证明你已经知道了,如果还不会,看完也就会了,上代码
var Person = {
'age': 18,
'sayHello': function () {
setTimeout(function () {
console.log(this.age);
});
}
};
var age = 20;
Person.sayHello();//这个输出的答案是啥
定义的Person是一个全局变量,那么它的this指向的自然就是windows了,然后又在windows调用这个对象里面的sayHello方法,那么你们懂得!!!方法里的this指向的就是windows了,至于为什么呢!你们可以自行试一下,这里就不多加解释了。 2. 箭头函数的this
var Person1 = {
'age': 18,
'sayHello': function () {
setTimeout(()=>{
console.log(this.age);
});
}
};
var age = 20;
Person.sayHello();//这个输出的答案是啥
跟上面的用法差不多,只不过这里的方法换成了箭头函数,那么它的正确答案却是18哦!因为箭头函数它本身是没有this的,它使用的this是它最近一个作用域的this,也就是说箭头函数在哪里定义的,那么它的this就指向谁。
二、上面就是箭头函数跟普通函数this的用法,只要记住普通函数的this指向的是:谁调用了我,我就指向谁,箭头函数的this是:谁定义了我,我就指向谁。OK,你学废了吗!!!