Money.prototype.constructor = function constructor(value, currency = 'usd'){
this.value = value;
this.currency = currency;
}
Money.prototype.getValue = function getValue(){
return this.value;
}
Money.prototype.exchangeTo = function exchangeTo(currency){
const value = Money.prototype.getValue;
return new Money(value, currency)
}
Money.prototype.add = function add(money){
if(this.getValue == money.getValue){
return new Money(this.getValue + money.getValue);
}else{
return new Money(this.getValue + money.exchangeTo(this.currency).getValue());
}
}
Money.prototype.format = function format() {
return this.getValue().toLocaleString("en-US",
{
style: 'currency',
currency: this.currency === "usd" ? 'USD' : 'EUR',
});
}
Вывод тестов следующий:
ReferenceError: Money is not defined
2 | // BEGIN (write your solution here)
3 |
> 4 | Money.prototype.constructor = function constructor(value, currency = 'usd'){
| ^
5 | this.value = value;
6 | this.currency = currency;
7 | }
at Object.<anonymous> (Money.js:4:1)
at Object.<anonymous> (__tests__/Money.test.js:3:1)
Ответ ментора на вопрос, почему Money не определён:
Ругается на то что Money не определен. Оно и верно, вы сразу стали прототипу “наращивать” методы, а сам Money никак не определили. Что это - переменная, функция, объект, класс?
Подскажите, как определить Money?
Пробовал этой строчкой: const money1 = new Money(100); - не сработало
Он не нужен. Твой код решает ту же задачу что описана в этом коде. У меня даже подозрение что это псевдокод ибо никто не пишет в продакшене Money.prototype.constructor = function.
Смотришь на то какое значение ожидается в результате теста, и какое возвращает твой код. Если они разные то
Прикидываешь на каком этапе от начала кода теста до его завершения промежуточное значение переменной отличается от ожидаемого. Например посмотри результат выполнения money1.exchangeTo('eur'). Соответствует ли объект твоим ожиданиям для тех входных данных с которыми вызывается код.
Найди и почини причину несоответсвия. Тут важно быть готовым пересмотреть подход к решению в целом: не всегда мелких правок достаточно. И к шагу 1.
Из того что бросается в глаза (но не является причиной ошибки в тесте) - ты не вызываешь методы getValue, хотя нужно: