Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
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
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов