【发布时间】:2017-02-05 17:18:36
【问题描述】:
我已经阅读了一些关于箭头函数的主题,但下面的代码只是让我感到困惑。
var bunny = {
name: 'Usagi',
tasks: ['transform', 'eat cake', 'blow kisses'],
first : () => {
console.log(this) //does not refer to bunny
},
second: function(){
console.log(this) //refers to bunny
},
third() {
this.tasks.forEach((task) => {
console.log(this); //refers to bunny
});
}
};
bunny.first();
bunny.second();
bunny.third();
谁能告诉我第三个函数内部函数 this 指向当前对象,而第一个没有。 是不是我们用箭头函数的时候,this是指当前定义的作用域?
【问题讨论】:
-
箭头函数没有在它们自己的词法范围内定义
this,所以它从它的外部范围中获取它,就像它获取一个没有在自身内部定义的普通变量一样。 -
当前
this对象字面量属性表达式中的上下文不是构造的对象。