Ответ
Геттер (getter) — это специальный метод объекта или класса в JavaScript, который позволяет получить значение свойства, динамически вычисляя его при каждом обращении. Объявляется с помощью ключевого слова get.
Основные характеристики:
- Вызывается как обычное свойство, без скобок
(). - Не принимает параметров.
- Позволяет инкапсулировать логику вычисления, сохраняя прозрачный интерфейс доступа.
Пример использования в объекте:
const user = {
firstName: 'Anna',
lastName: 'Smith',
// Геттер для полного имени
get fullName() {
return `${this.firstName} ${this.lastName}`;
},
// Геттер может зависеть от других свойств
get profileLink() {
return `/users/${this.firstName.toLowerCase()}-${this.lastName.toLowerCase()}`;
}
};
console.log(user.fullName); // 'Anna Smith'
console.log(user.profileLink); // '/users/anna-smith'
Пример в классе ES6 (актуально для Node.js):
class Product {
constructor(price, taxRate) {
this.price = price;
this.taxRate = taxRate;
}
// Геттер для цены с налогом
get priceWithTax() {
return this.price * (1 + this.taxRate);
}
// Геттер для "ленивого" кэширования тяжелых вычислений
get expensiveCalculation() {
if (!this._cachedResult) {
console.log('Performing heavy computation...');
this._cachedResult = this.price * Math.PI; // Пример вычисления
}
return this._cachedResult;
}
}
const item = new Product(100, 0.2);
console.log(item.priceWithTax); // 120
console.log(item.expensiveCalculation); // Выполнит вычисление
console.log(item.expensiveCalculation); // Вернёт закэшированное значение
Зачем это нужно в Node.js: Геттеры полезны для создания вычисляемых полей в моделях (например, в ORM типа Sequelize), реализации паттерна «ленивая загрузка», валидации данных перед возвратом и обеспечения обратной совместимости при рефакторинге внутренней структуры объекта.
Видео-ответы
▶
▶