前端手敲 深拷贝浅拷贝代码
时间: 2024-05-27 19:05:39 浏览: 19
以下是前端手敲的深拷贝和浅拷贝的代码示例:
1. 浅拷贝(Object.assign)[^1]
```javascript
let obj1 = { name: 'John', age: 30 };
let obj2 = Object.assign({}, obj1);
obj2.name = 'Jane';
console.log(obj1); // 输出:{ name: 'John', age: 30 }
console.log(obj2); // 输出:{ name: 'Jane', age: 30 }
```
2. 深拷贝(递归方法)
```javascript
function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}
let obj1 = { name: 'John', age: 30, hobbies: ['reading', 'coding'] };
let obj2 = deepCopy(obj1);
obj2.name = 'Jane';
obj2.hobbies.push('swimming');
console.log(obj1); // 输出:{ name: 'John', age: 30, hobbies: ['reading', 'coding'] }
console.log(obj2); // 输出:{ name: 'Jane', age: 30, hobbies: ['reading', 'coding', 'swimming'] }
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)