Применение оператора распространения к объекту с помощью геттера - PullRequest
0 голосов
/ 12 мая 2019

Если вы объявляете класс с получателем

class Person {
  constructor(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  get fullName() {
    return [this.firstName, this.lastName].join(" ");
  }
}

, вы можете получить доступ к получателю после создания нового объекта

const person = new Person("Jane", "Doe");
console.log(person.fullName); // "Jane Doe"

, но это не сработает после копирования объекта с использованиемоператор распространения

const personCopy = { ...person };
console.log(personCopy.fullName); // undefined

Я думаю, что это несколько запутанный синтаксис.

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

Оператор распространения * только 1002 *

копирует собственные перечисляемые свойства из предоставленного объекта в новый объект.

В то время как свойство определено с использованием get синтаксис

будет определен для прототипа объекта.

0 голосов
/ 12 мая 2019

Оператор распространения создает новый объект, используя Object в качестве конструктора.Таким образом, в вашем случае personCopy не является экземпляром класса Person, и в результате этого его __proto__ не является Person.prototype, и, следовательно, метод получения не будет работать.

...