Вот это не идиоматически. new
нужно использовать с конструкторами. make
по своей сути - фабрика объектов. Корректнее было бы
return make( ....
Вот это не идиоматически. new
нужно использовать с конструкторами. make
по своей сути - фабрика объектов. Корректнее было бы
return make( ....
Начал смотреть решения учителя:
const make = (numer, denom) => ({
numer,
denom,
getNumer() {
return this.numer;
},
getDenom() {
return this.denom;
},
toString() {
return `${this.getNumer()}/${this.getDenom()}`;
},
add(rational) {
const newNumer = this.getNumer() * rational.getDenom() + rational.getNumer() * this.getDenom();
const newDenom = this.getDenom() * rational.getDenom();
return make(newNumer, newDenom);
},
});
Объясни только пожалуйста, что это за синтаксис:
const make = (numer, denom) => ({
});
Что обозначают скобки после “=>” ?
({ });
Это функция которая возвращает объект.
Анонимная функция
() => { ... }
Еще валидный синтаксис с () => 10
без скобок. Это функция которая возвращает 10.
Еще валидный синтаксис () => return 10
- с явным return
.
Синтаксис () => (10)
- тоже валидный. Просто выражение 10
взято в скобки.
Синтаксис () => ({})
- это анонимная функция которая возвращает объект. А скобки нужны чтобы парсер js отличил {}
функции от {}
объекта.
С этими стрелочными функциями и их сокращенными вариантами написания мозг немного съезжает набекрень. Ибо много комбинаций и их интерпретаций.
Рахим с хекслета адекватный парень, но тот кто писал этот пример не сделал его проще для начинающих.
Я бы писал так:
function make(number, denom) {
return {
numer: numer,
denom: denom,
getNumer() {
return this.numer;
},
getDenom() {
return this.denom;
},
toString() {
return `${this.getNumer()}/${this.getDenom()}`;
},
add(rational) {
const newNumer = this.getNumer() * rational.getDenom() + rational.getNumer() * this.getDenom();
const newDenom = this.getDenom() * rational.getDenom();
return make(newNumer, newDenom);
}
}
}