使用getter将散布运算符应用于对象

时间:2019-05-12 09:45:09

标签: javascript ecmascript-2018

如果您使用getter声明类

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

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

您可以在实例化新对象后访问getter

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

但是使用散布运算符复制对象后,此操作将无效

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

我认为这有点令人困惑。

2 个答案:

答案 0 :(得分:2)

spread operator

  

将自己的可枚举属性从提供的对象复制到新对象。

使用get syntax

定义的属性
  

将在对象的原型上定义。

答案 1 :(得分:0)

spread运算符使用Object作为构造函数创建一个新对象。因此,在您的情况下,personCopy不是类Person的实例,因此,它的__proto__不是Person.prototype,因此该吸气剂将无法工作