Геттеры и сеттеры JS
Геттеры и сеттеры в JavaScript - это специальные методы, которые используются для доступа к свойствам объекта и управления ими. Они предоставляют возможность получать и изменять значения свойств объекта, а также позволяют добавить дополнительную логику при доступе к этим значениям.
Геттеры (getter) - это методы, которые используются для получения значения свойства объекта. Они представлены с помощью ключевого слова "get" перед именем метода. Геттеры не требуют явного вызова, они вызываются автоматически при обращении к свойству объекта.
Пример геттера:
const obj = {
firstName: 'John',
lastName: 'Doe',
get fullName() {
return `${this.firstName} ${this.lastName}`;
}
};
console.log(obj.fullName); // Вывод: "John Doe"
В данном примере мы объявляем объект obj со свойствами "firstName" и "lastName". Затем мы определяем геттер "fullName", который возвращает полное имя, состоящее из значения свойств "firstName" и "lastName". При обращении к свойству "fullName" в консоли, геттер автоматически вызывается и возвращает полное имя.
Сеттеры (setter) - это методы, которые используются для установки значения свойства объекта. Они представлены с помощью ключевого слова "set" перед именем метода. Сеттеры также вызываются автоматически при присваивании значения свойству объекта.
Пример сеттера:
const obj = {
_firstName: 'John',
get firstName() {
return this._firstName;
},
set firstName(value) {
if (typeof value === 'string') {
this._firstName = value;
} else {
throw new Error('Invalid type');
}
}
};
console.log(obj.firstName); // Вывод: "John"
obj.firstName = 'Jane';
console.log(obj.firstName); // Вывод: "Jane"
obj.firstName = 123; // Ошибка: Invalid type
В данном примере мы объявляем объект obj с приватной переменной "_firstName" и геттером "firstName", который возвращает значение "_firstName". Затем мы определяем сеттер "firstName", который проверяет тип значения перед установкой и присваивает его приватной переменной "_firstName". При обращении к свойству "firstName" с помощью сеттера, значение присваивается переменной "_firstName".
Таким образом, геттеры и сеттеры позволяют нам выполнять дополнительные действия при доступе к свойствам объекта, контролировать значение перед его установкой и получать значение с дополнительными преобразованиями или логикой. Это делает работу с объектами более гибкой и удобной.