ООП, Прототипы, конвертор валют

Есть задача

введите сюда описание изображения

Пример реализации

введите сюда описание изображения

То есть в целом если не лезть в глубину реализация верная и возвращает нужные значения. Но есть, как всегда одно но... Если я вывожу в консоль новые объекты ( у них остаются дефолтное значение 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);


Ответы (0 шт):