Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник JavaScript

get / set

Свойства, за которыми скрываются функции: чтение вызывает get, запись — set.

Доступно с: ES5

Синтаксис

get name() { … } / set name(value) { … }

Примеры

Вычисляемое свойство:

class User {
  constructor(first, last) {
    this.first = first;
    this.last = last;
  }
 
  get fullName() {
    return `${this.first} ${this.last}`;
  }
}
 
console.log(new User('Anna', 'Smith').fullName);

Результат:

Anna Smith

Проверка значения при записи:

class Product {
  #price = 0;
 
  get price() {
    return this.#price;
  }
 
  set price(value) {
    if (value < 0) throw new RangeError('Price cannot be negative');
    this.#price = value;
  }
}
 
const tea = new Product();
tea.price = 5;
console.log(tea.price);
 
try {
  tea.price = -1;
} catch (error) {
  console.log(error.message);
}

Результат:

5
Price cannot be negative

Примечания

К геттеру обращаются как к свойству, без скобок: user.fullName, а не user.fullName(). Геттер без сеттера делает свойство доступным только для чтения. Работает и в обычных объектах: { get total() { … } }.

См. также

  • Private fields (#) — Поля и методы, доступные только внутри класса.
  • class — Объявляет класс — шаблон для создания объектов с общими методами.
  • Object.defineProperty — Создаёт свойство с точными настройками: только для чтения, скрытое, с геттером.

В учебнике

  • Геттеры и сеттеры — Геттеры и сеттеры в классах JavaScript: вычисляемые свойства, проверка значений при записи и свойства только для чтения.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.