箭头函数体内的this
对象,就是定义该函数时所在的词域作用域指向的对象,而不是使用时所在的作用域指向的对象。
const person = {
name: 'tom',
sayHiAsync: function () {
setTimeout(() => {
console.log(`hi, my name is ${this.name}`);
}, 1000);
}
}
person.sayHiAsync(); // hi, my name is tom
setTimeout
中的function函数体中的this指向的是上层函数体中的this,即sayHiAsync: function() {}
中的this,而这里的this取决于谁调用了它,person调用了sayHiAsync
,那么相当于person.name
箭头函数里面的this定义时会继承自外部的this,普通函数中的this并不会向上继续找对象,箭头函数中会往上寻找this,直到找到所代表的this为止。