深拷贝和浅拷贝的方法
时间: 2023-11-01 11:07:52 浏览: 90
详解JS深拷贝与浅拷贝
深拷贝和浅拷贝是在复制对象或数组时常用的两种方法。
一种实现深拷贝的方法是通过递归遍历对象或数组的每一个元素,如果元素是基本数据类型,则直接复制,如果是对象或数组,则继续递归遍历直到找到基本数据类型为止。这种方法可以保证每个元素都被复制,而不仅仅是引用。例如,在JavaScript中可以使用以下代码实现深拷贝:
```javascript
function deepClone(obj) {
var objClone = Array.isArray(obj) ? [] : {};
if (obj && typeof obj === "object") {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
if (obj[key && typeof obj[key === "object") {
objClone[key = deepClone(obj[key]);
} else {
objClone[key = obj[key];
}
}
}
}
return objClone;
}
```
另一种常见的浅拷贝方法是使用Object.assign()方法。该方法会将源对象的可枚举属性复制到目标对象中,并返回目标对象。但是需要注意的是,该方法只会复制对象的第一层属性,而不会递归复制深层对象。例如,在JavaScript中可以使用以下代码实现浅拷贝:
```javascript
#### 引用[.reference_title]
- *1* *3* [深拷贝和浅拷贝常见的实现方式](https://blog.csdn.net/weixin_45273903/article/details/122625920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [深拷贝和浅拷贝的几种方法](https://blog.csdn.net/m0_49255274/article/details/107782331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文