Setter и getter

Ключевое слово set связывает свойство с функцией (setter), которая будет вызвана при попытке присвоить значение свойству с помощью оператора =. Формат:

set <Имя свойства>(<Значение>) {
   ...
}

Функция принимает только один параметр, в который передается значение, указанное после оператора =:

<Объект>.<Имя свойства> = <Значение>;

Связать свойство с функцией (getter), которая будет вызвана при попытке получения значения, позволяет ключевое слово get:

get <Имя свойства>() {
   return ...;
}

Функция не содержит никаких параметров. Вызывается, например, в следующем случае:

<Переменная> = <Объект>.<Имя свойства>;

Пример использования ключевых слов set и get:

let car = {
   set model(name) {
      this._model = name;
   },
   get model() {
      return this._model;
   }
};
console.log(car);       // { model: [Getter/Setter] }
car.model = 'ВАЗ-2109'; // Вызывается set model(name)
console.log(car.model); // Вызывается get model()
// ВАЗ-2109
// Можно получить доступ к _model напрямую
console.log(car._model); // ВАЗ-2109

Допускается динамическое создание названия свойства. В этом случае название свойства указывается внутри квадратных скобок:

let nameProp = 'model';
let car = {
   set [nameProp](name) {
      this._model = name;
   },
   get [nameProp]() {
      return this._model;
   }
};
car.model = 'ВАЗ-2109';
console.log( car.model );     // ВАЗ-2109
car[nameProp] = 'ВАЗ-2109';
console.log( car[nameProp] ); // ВАЗ-2109

Чтобы добавить getter и setter после создания объекта, следует воспользоваться статическим методом defineProperty(<Объект>, <Имя свойства>, <Настройки>) из класса Object:

let car = {
   _model: ''
};
Object.defineProperty(car, 'model', {
   set: function(name) {
      this._model = name;
   },
   get: function() {
      return this._model;
   }
});
car.model = 'ВАЗ-2109';
console.log( car.model );     // ВАЗ-2109
console.log( car._model );    // ВАЗ-2109

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов