Как добавить сеттеру проверку передаваемого значения параметра

Добавить сеттеру price проверку передаваемого значения параметра newPrice. Если оно больше чем MAX_PRICE, сеттер ничего не делает, а если меньше или равно, то перезаписывает цену автомобиля. Что не так?

class Car {
  #price;
  
  static MAX_PRICE = 50000
  constructor({
    price
  }) {
    this.#price = price;
  }

  get price() {
    return this.#price;
  }

  set price(newPrice) {
    if (this.#price <= Car.MAX_PRICE)
      return newPrice
  }

}

const audi = new Car({
  price: 35000
});
console.log(audi.price); // 35000

audi.price = 49000;
console.log(audi.price); // 49000

audi.price = 51000;
console.log(audi.price); // 49000


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

Автор решения: EzioMercer
  • Сеттер никогда ничего не должен возращать
  • Надо проверять не текщую цену, а ту что на вход приходит

class Car {
  #price;
  
  static MAX_PRICE = 50000;
  
  constructor({price}) {
    this.#price = price;
  }

  get price() {
    return this.#price;
  }

  set price(newPrice) {
    if (newPrice <= Car.MAX_PRICE) this.#price = newPrice;
  }

}

const audi = new Car({
  price: 35000
});
console.log(audi.price); // 35000

audi.price = 49000;
console.log(audi.price); // 49000

audi.price = 51000;
console.log(audi.price); // 49000

→ Ссылка