js中深拷贝浅拷贝实现
时间: 2023-05-04 14:02:45 浏览: 76
在JavaScript中,当我们需要复制一个对象时,有两种方法可以实现:深拷贝和浅拷贝。
浅拷贝是将对象A的属性值拷贝到新创建的对象B中,但如果属性值是一个对象或数组,那么B中的属性与A中的属性将共享同一个引用,也就是说,改变B中的属性时,A中的属性也会被改变。所以,浅拷贝只是对对象的引用进行了复制,而不是对对象本身进行了复制。
实现浅拷贝有多种方法,一种简单的方法是使用Object.assign()函数,如下所示:
```javascript
let objA = {name: 'Alice', age: 25};
let objB = Object.assign({}, objA);
console.log(objB); // 输出 {name: 'Alice', age: 25}
```
深拷贝是将对象A的所有属性以及属性下的所有子属性都复制到新创建的对象B中,也就是说,B与A是完全独立的对象,改变B中的属性不会影响A中的属性。实现深拷贝也有多种方法,其中一种常见的方法是使用JSON.parse()和JSON.stringify()函数组合,如下所示:
```javascript
let objA = {name: 'Alice', age: 25, friends: ['Bob', 'Tom'], address: {city: 'Shanghai', country: 'China'}};
let objB = JSON.parse(JSON.stringify(objA));
console.log(objB); // 输出 {name: 'Alice', age: 25, friends: ['Bob', 'Tom'], address: {city: 'Shanghai', country: 'China'}}
```
以上方法都有各自的优缺点,根据实际需求选择合适的方法实现对象复制。