Javascript 使用getter对对象应用扩展运算符
如果您使用getter声明一个类Javascript 使用getter对对象应用扩展运算符,javascript,ecmascript-2018,Javascript,Ecmascript 2018,如果您使用getter声明一个类 班级人员{ 构造函数(名字,姓氏){ this.firstName=firstName; this.lastName=lastName; } 获取全名(){ 返回[this.firstName,this.lastName].join(“”); } } 可以在实例化新对象后访问getter const person=新人(“简”、“多伊”); console.log(person.fullName);//“无名氏” 但在使用“扩展”操作符复制对象后,这将不起作
班级人员{
构造函数(名字,姓氏){
this.firstName=firstName;
this.lastName=lastName;
}
获取全名(){
返回[this.firstName,this.lastName].join(“”);
}
}
可以在实例化新对象后访问getter
const person=新人(“简”、“多伊”);
console.log(person.fullName);//“无名氏”
但在使用“扩展”操作符复制对象后,这将不起作用
const personCopy = { ...person };
console.log(personCopy.fullName); // undefined
我认为这是有点混乱的语法。唯一的
将自己的可枚举属性从提供的对象复制到新对象上
而使用
将在对象的原型上定义
spread操作符使用
object
作为构造函数创建一个新对象。因此,在你的例子中,personCopy
不是类Person
的实例,因此,它的\uuuu proto\uuu
不是Person.prototype
,因此getter不起作用。所以你在一分钟内回答了自己的问题。是的,我认为它值得分享@Faizan WellpersonCopy
是一个普通对象,它不从Person.prototype
继承getter。为什么您仍然希望.fullName
能够工作?@Bergi我的观点是,两个非常不同的操作的语法是相同的,可能会导致混淆。