扩展运算符执行的是浅拷贝
当你使用扩展运算符复制一个对象时,它会创建一个新的对象,并将原始对象的属性和值复制到新对象中。如果原始对象中包含了其他对象作为其属性值,那么新对象和原始对象会共享这些属性,它们都指向同一个对象。
举个例子
const obj1 = {
name: 'maomao',
info: {
age: 18
}
}
const obj2 = {...obj1}
obj2.name = 'ayetongzhi'
obj2.info.age = 22
console.log('obj1', obj1)
obj1 {
name: 'maomao',
info: { age: 22 }
}
console.log('obj2', obj2)
obj2 {
name: 'ayetongzhi',
info: { age: 22 }
}
在上述例子中,我们定义了一个对象 obj1,用扩展运算符将obj1拷贝给变量 obj2。
随后obj2 修改了 name 属性和 info 引用对象中的 age 属性。
打印结果我们发现,obj1 的 info 引用对象的值也发生了改变。
因此,我们可以知道,扩展运算符执行的是浅拷贝。