Геттеры аксессоров в ООП в JavaScript

Давайте подробнее разберем применение геттеров свойств-аксессоров. Пусть у нас есть следующий класс с приватным свойством:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
}

Давайте сделаем в этом классе публичное свойство name, которое можно будет прочитать, но нельзя будет записать:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
  
  get name() {
    return this.#name;
  }
}

Проверим работу. Создадим объект нашего класса, передав ему параметром значение имени:

javascriptlet user = new User('john');

А теперь прочитаем имя через публичное свойство:

javascriptlet name = user.name;
console.log(name);

А вот попытка записать имя приведет к ошибке, как мы и добивались:

javascriptuser.name = 'eric';
Задание 1

Реализуйте геттеры аксессоров для свойств класса Employee.