不是说箭头函数实际上没有this,它的this实际上是箭头函数定义生效时所在的对象吗,那么怎么解释这个:
var xx = "bb"
var obj={
xx:"aa",
foo:()=>{console.log(this.xx);}
};
obj.foo(); // 输出bb
这个箭头函数定义时不是在obj中吗?那么为什么this指向了obj的外边
不是说箭头函数实际上没有this,它的this实际上是箭头函数定义生效时所在的对象吗,那么怎么解释这个:
var xx = "bb"
var obj={
xx:"aa",
foo:()=>{console.log(this.xx);}
};
obj.foo(); // 输出bb
这个箭头函数定义时不是在obj中吗?那么为什么this指向了obj的外边
题主的代码使用babel转义之后是这样的:
var _this = this;
var a = 'bb';
var obj = {
a: 'aa',
foo: function bar() {
console.log(_this.a);
}
};
所以箭头函数中的this指向的是最外层的this
正因为你使用了 箭头函数, 在构造obj的时候 绑定的this 为window;