# Свойства-аксессоры в ООП в JavaScript

Есть два типа свойств объекта.

Первый тип это свойства-данные (data properties). Мы уже знаем, как работать с ними. Все свойства, которые мы использовали до текущего момента, были свойствами-данными.

Второй тип свойств мы ещё не рассматривали. Это свойства-аксессоры (accessor properties). По своей сути это функции, которые используются для присвоения и получения значения, но во внешнем коде они выглядят как обычные свойства объекта.

Свойства-аксессоры создаются с помощью ключевых слов `get` и `set` написанных при объявлении методов:

`class User { get name() { } set name(name) { } }`

В результате такого объявления наш класс будет обладать свойством `name`. При этом при попытке чтения этого свойства будет вызван метод, объявленный через `get`:

`let name = user.name;`

При попытке записи будет вызван метод, объявленный через `set`:

`user.name = 'john';`

Дан следующий класс:

`class Employee { get name() { console.log('get'); } set name(name) { console.log('set'); } }`

Создайте объект этого класса и попробуйте записать и прочитать данные из свойства `name`.

← →
↑