Ecmascript 6 箭头函数似乎非常适合用作类中的方法,因为它们不受与“this”引用混淆的调用上下文的影响。不过,我看不出如何以我期望的方式使用它们。以下是一个类,它显示了我可以看到的两种使用它们的方法:
class Person {
constructor(aName) {
this.name = aName;
this.say2 = () => console.log(this.name);
}
say() { console.log(this.name) }
say3() { () => consolve.log(this.name) }
}
say2 和 say3 都将使用新的 this 处理,并且应该能够将它们传递给单击处理程序和其他需要回调的函数,而不必担心在某些情况下会调用回调,这会导致“this”意外指向某些东西除了对象的适当实例。
尽管如此,say2 和 say3 都显得很尴尬。say2 在构造函数中定义,而 say3 实际上是箭头函数的包装器。我期待一些语法,它可以让我用类似的东西替换 say() 行
say: () => console.log(this.name)
但据我所知,你不能做这样的事情。所以问题是,使用箭头函数作为方法是say2或say3的方法是合理的。有没有更好的办法?