如果您用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
我认为这有点令人困惑。
仅传播算子
复制从提供的对象到新对象的枚举属性。
使用get语法定义的属性
将在对象的原型上定义。
传播操作员使用Object
作为构造函数创建一个新对象。因此,就您而言,personCopy
不是类Person
的实例,因此,其__proto__
不是Person.prototype
,因此Getter无法正常工作。