Использовать геттеры и сеттеры для контроля доступа к объекту
Вы можете получить значения от объекта и установить значение свойства внутри объекта используя геттеры и сеттеры . Функции 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 для другого пользователя, который получит правильный результат, независимо от того, какой из них вы отслеживаете. Другими словами, вы абстрагируете детали реализации от потребителя.