Геттеры мнимых свойств в ООП в JavaScript

С помощью аксессоров можно создавать мнимые свойства, которых в объекте на самом деле нет. Давайте посмотрим на примере. Пусть у нас есть класс с двумя публичными свойствами:

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

Давайте сделаем третье свойство, которое будет содержать имя и фамилию. Создадим для этого свойство-аксессор:

javascriptclass User {
  constructor(name, surn) {
    this.name = name;
    this.surn = surn;
  }
  
  get full() {
    return this.name + ' ' + this.surn;
  }
}

Проверим. Создадим объект класса, передав параметрами имя и фамилию:

javascriptlet user = new User('john', 'smit');

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

javascriptconsole.log(user.name); // 'john'
console.log(user.surn); // 'smit'

А теперь выведем значение нашего мнимого свойства:

javascriptconsole.log(user.full); // 'john smit'