Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用getter对对象应用扩展运算符_Javascript_Ecmascript 2018 - Fatal编程技术网

Javascript 使用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);//“无名氏” 但在使用“扩展”操作符复制对象后,这将不起作

如果您使用getter声明一个类

班级人员{
构造函数(名字,姓氏){
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 Well
personCopy
是一个普通对象,它不从
Person.prototype
继承getter。为什么您仍然希望
.fullName
能够工作?@Bergi我的观点是,两个非常不同的操作的语法是相同的,可能会导致混淆。