гетеры и сеттеры js

class PrintEditionItem {
  constructor(name, releaseDate, pagesCount) {
    this.name = name
    this.releaseDate = releaseDate
    this.pagesCount = pagesCount
    this.state = 100
    this.type = null
  }
  fix() {
    this.state *= 1.5
  }
  set newState(state) {
    return this.state = Math.max(0, Math.min(100, this.state))
  }
  get newState() {
    return this.state
  }
}

Добрый вечер Подскажите, значение this.state по умолчанию 100, вызов функции fix() должен увеличивать значение на 1,5, как через геттер и сеттер произвести проверку получившегося значения?


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

Автор решения: eccs0103

Смысл get и set в том, чтобы ограничить значение какого-то свойства. Их смысл пропадает, если

  1. это свойство публичное,
  2. вы используйте это свойство вместо get и set

Правильно будет так:

class PrintEditionItem {
  #state;
  get newState() {
    return this.#state;
  }
  set newState(value) {
    this.#state = Math.max(0, Math.min(value, 100));
  }
  fix() {
    this.newState *= 1.5;
  }
}
→ Ссылка