第一个this是1990 为什么第二个是obj了呢?
var obj = {
birth: 1990,
getAge: function () {
var b = this.birth; // 1990
var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
return fn();
}
};
obj.getAge(); // 25
第一个this是1990 为什么第二个是obj了呢?
var obj = {
birth: 1990,
getAge: function () {
var b = this.birth; // 1990
var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
return fn();
}
};
obj.getAge(); // 25
箭头函数的this
绑定的是箭头函数所在执行上下文的this
。
也就是说,代码中,this.birth === obj.birth
。new Date().getFullYear() - this.birth
也就是2018 - 1990
。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答867 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
说的俗一点,应该就能解释清楚:
本例中,箭头函数在getAge这个function中定义的,那么getAge就是它爸,箭头函数中提到的this就是getAge的this。 obj.getAge()执行后, getAge的this指向obj, 所以箭头函数中的this也指向obj
题外话:
看了你和其他人的互动,你是不是对普通函数的this理解还不清楚?普通函数的this,比如本例中的var b用到this,这种普通函数this运行时才能确定指向哪个对象:绑定在谁身上执行,这个this就指向谁。 比如: