Как дополнение, как уже упоминалось, первое и второе не совпадают. Одно из основных отличий заключается в том, где и как они доступны. Посмотрите этот фрагмент, вы увидите, что определения методов доступны при создании объекта, но не объявление функции.
Это означает, что когда вы определяете с традиционным стилем, вы не можете использовать его в другом месте объекта, он будет неопределенным. Класс стиля будет доступен, что является огромной разницей.
methods = {
classStyle() {
//console.log('class this is', this);
return 'class';
},
traditionalStyle: function() {
//console.log('traditional this is', this);
return 'tradition';
},
arrowStyle: () => {
console.log('arrow this is', this);
},
testFn() {
console.log('class is', this.classStyle);
console.log('traditionnal is', this.traditionnalStyle);
},
get classProp() {
return this.classStyle();
},
get traditionnalProp() {
return this.traditionnalStyle();
}
};
methods.testFn();
console.log(methods.classProp);
console.log(methods.traditionnalProp);