Object.assign()深拷贝的例子
时间: 2023-07-05 17:25:06 浏览: 79
JavaScript 复制对象与Object.assign方法无法实现深复制
5星 · 资源好评率100%
Object.assign()方法可以用于浅拷贝对象。如果要进行深拷贝,需要先使用JSON.stringify()将对象转化为JSON字符串,再使用JSON.parse()将JSON字符串转化为新的对象。以下是一个深拷贝的例子:
```javascript
let obj = {
name: 'Alice',
age: 20,
address: {
city: 'Beijing',
country: 'China'
}
};
let newObj = JSON.parse(JSON.stringify(obj));
newObj.name = 'Bob';
newObj.address.city = 'Shanghai';
console.log(obj); // { name: 'Alice', age: 20, address: { city: 'Beijing', country: 'China' } }
console.log(newObj); // { name: 'Bob', age: 20, address: { city: 'Shanghai', country: 'China' } }
```
注意,这种方法虽然可以进行深拷贝,但是如果对象中含有函数、正则表达式等特殊类型的属性,会失去它们的特殊性,变成普通的对象属性。同时,如果对象中有循环引用的情况,会出现无限递归的问题。在实际应用中,需要根据具体情况选择更合适的深拷贝方法。
阅读全文