Учитывая пример, который вы показали, большой разницы нет, и их, вероятно, можно использовать взаимозаменяемо.
Есть только очень маленькие вещи, такие как факт, что выражение функции объявлено снаружи, возможно, внутренне, он не будет повторно создаваться каждый раз, когда создается экземпляр класса.Честно говоря, я должен проверить спецификацию EcmaScript, чтобы проверить это.
Вещи меняются, когда вам нужно передать одну из этих функций в качестве ссылки на другие функции, и нужно ли этим адресатам обращаться к исходному контексту или к новому.
У лямбд не может быть другого контекста, кроме того, в котором они объявлены, поэтому они могут передаваться как ссылки без проблем.
Вместо этого методы экземпляра должны быть связаны с контекстомпрежде чем они будут переданы как ссылки.
Вы когда-нибудь видели этот шаблон?
constructor() {
// ...
this.myMethod = this.myMethod.bind(this)
}
myMethod(x,y){
return x*y
}
Это просто перезаписывает myMethod
в области видимости с копией того же метода, связанного с этим контекстом,В основном точно так же, как:
myMethod = (x, y) => x * y