【发布时间】:2019-09-29 13:35:26
【问题描述】:
如果你用 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
我认为这有点令人困惑。
【问题讨论】:
-
所以你在一分钟内回答了你自己的问题。
-
是的,我认为值得分享。 stackoverflow.blog/2011/07/01/…
-
@Faizan Can I answer my own question?
-
好吧,
personCopy是一个普通对象,它没有从Person.prototype继承一个 getter。为什么你仍然期望.fullName工作? -
@Bergi 我的意思是,两个非常不同的操作的语法是相同的,可能会导致混淆。
标签: javascript ecmascript-2018