词汇范围绑定(价值)
箭头函数是词法范围的 ; 这意味着他们的 this
绑定绑定到周围范围的上下文。也就是说,无论 this
指的是什么,都可以通过使用箭头函数来保存。
看一下下面的例子。Cow
类有一种方法可以让它在 1 秒后打印出它所发出的声音。
class Cow {
constructor() {
this.sound = "moo";
}
makeSoundLater() {
setTimeout(() => console.log(this.sound), 1000);
}
}
const betsy = new Cow();
betsy.makeSoundLater();
在 makeSoundLater()
方法中,this
上下文指的是 Cow
对象的当前实例,因此在我称之为 betsy.makeSoundLater()
的情况下,this
上下文指的是 betsy
。
通过使用箭头函数,我保留 this
上下文,以便我可以在打印出来时引用 this.sound
,这将正确地打印出 moo
。
如果你使用常规函数代替箭头函数,则会丢失在类中的上下文,并且无法直接访问 sound
属性。