ООП, Прототипы, конвертор валют
Есть задача
Пример реализации
То есть в целом если не лезть в глубину реализация верная и возвращает нужные значения. Но есть, как всегда одно но... Если я вывожу в консоль новые объекты ( у них остаются дефолтное значение currency, и как бы я не старался он хочет в новом объекте изменяться. В другом случае если меняю через контекст, вообще все ломается, меняется значение в исходном объекте и дальше все идет не пол плану.
const Money = function money(value, currency = 'usd') {
this.value = value;
this.currency = currency;
}
Money.prototype.getValue = function getValue() {
return this.value;
}
Money.prototype.exchangeTo = function exchangeTo(currency) {
if (currency === 'eur') {
return new Money(this.getValue() * 0.7);
} else {
return new Money(this.getValue() * 1.2);
}
}
Money.prototype.add = function add(object) {
if (this.currency !== object.currency) {
return new Money(this.getValue() + object.exchangeTo(this.currency).getValue())
} else {
return new Money(this.getValue() + object.getValue());
}
}
const money1 = new Money(100);
console.log(money1);
console.log(money1.getValue());
console.log(money1.exchangeTo('eur').getValue());
const money2 = new Money(200, 'eur');
console.log(money2);
console.log(money2.getValue());
const money3 = money2.add(money1);
console.log(money3);
console.log(money3.getValue());
console.log(money1);
const money4 = money1.add(money2);
console.log(money4.getValue());
console.log(money4);

