Use getters and setters to Control Access to an Object

Вы можете получить значения от объекта и установить значение свойства внутри объекта используя геттеры и сеттеры . Функции Getter предназначены для простого возврата (получения) значения частной переменной объекта пользователю без прямого доступа пользователя к частной переменной объекта. Функции Setter предназначены для изменения (установки) значения частной переменной объекта на основе значения, переданного в функцию setter. Это изменение может включать вычисления или даже полностью перезаписать предыдущее значение.

class Book {
  constructor(author) {
    this._author = author;
  }
  // getter
  get writer() {
    return this._author;
  }
  // setter
  set writer(updatedAuthor) {
    this._author = updatedAuthor;
  }
}

const novel = new Book('anonymous');
console.log(novel.writer); // anonymous

novel.writer = 'newAuthor';
console.log(novel.writer); // newAuthor 

Обратите внимание на синтаксис, который мы используем, чтобы вызвать getter и setter - как будто они не являются даже функциями. Геттеры и сеттеры важны, потому что они скрывают внутренние детали реализации.

Примечание: Лично я не рекомендую использовать такие сеттеры/геттеры, так как визуально их сложно воспринимать в коде (на вид строчное свойство, а на самом деле функция). То есть очень сложно на вид определять будет ли передаваемое или читаемое значение как-то преобразовываться неведомой функцией, или просто будет задано/получено как есть.

Используйте ключевое слово class для создания класса термостата. Конструктор принимает температуру в градусах по Фаренгейту. Теперь создайте getter и setter в классе, чтобы получить температуру в градусах Цельсия. Помните, что C = 5/9 * (F - 32) и F = C * 9.0 / 5 + 32 , где F - значение температуры по шкале Фаренгейта, а C - значение той же температуры по шкале Цельсия.

Примечание: Когда вы выполните это, вы будете отслеживать температуру внутри класса в одном масштабе - либо по Фаренгейту, либо по Цельсию. Это сила геттера или сеттера - вы создаете API для другого пользователя, который получит правильный результат, независимо от того, какой из них вы отслеживаете. Другими словами, вы абстрагируете детали реализации от потребителя.