網站首頁 編程語言 正文
拷貝完以后,數據存放的地址不同,數據完全相同。
方式1:JSON.stringify()方式
JSON.stringify()將字符串轉化成json格式數據,JSON.parse()將json字符串轉化成對象
對象中如果有函數,undefined,symbol,使用過JSON.stringfy()處理之后,都會消失
let obj1 = { a: 0,
b: {
c: undefined
}
};
let obj2 = JSON.parse(JSON.stringify(obj1));
obj1.a = 1;
obj1.b.c = 1;
console.log(obj1); // { a: 1, b: { c: 1 } }
console.log(obj2); // { a: 0, b: {} }
方式2:函數庫lodash的_.cloneDeep方法
npm i lodash//先安裝
node_modules跟下面的node.js文件在一個根目錄
var _ = require('lodash');
var obj1 = {
a: 1,
b: { f: { g: 1 } },
c: [1, 2, 3]
};
var obj2 = _.cloneDeep(obj1);
console.log(obj1 === obj2);// false地址不同
方式3:手寫深拷貝,defined和function都可以復制
function deepCopy(object){
if(!object || typeof object !== 'object')
return;
let newObject = Array.isArray(object) ? [] : {};
//遍歷對象中的key
for(let key in object){
//判斷對象中有該鍵值嗎
if(object.hasOwnProperty(key)){
//如果鍵值是對象遞歸,如果不是,將這個這個鍵值存到數組中
newObject[key] =
typeof object[key] === "object" ? deepCopy(object[key]): object[key];
}
}
return newObject;
}
let obj1 ={
a:1,
b:{
c: undefined
},
sayHello(){
console.log("nihao")
}
}
let obj2 = deepCopy(obj1)
console.log(obj2)

?
原文鏈接:https://blog.csdn.net/qiuyushuofeng/article/details/125607686
相關推薦
- 2022-04-07 React中代碼分割的4種實現方式_React
- 2022-03-23 C++函數模板的使用詳解_C 語言
- 2023-05-09 Oracle中分割字符串的方法實例代碼_oracle
- 2021-12-09 銀河麒麟4.0.2(Ubuntu)擴展boot分區(qū)過程介紹_Linux
- 2022-06-26 python數據處理之Pandas類型轉換的實現_python
- 2022-08-06 為Visual?Studio手工安裝微軟ReportViewer控件_自學過程
- 2022-04-25 jquery實現表格行的上下移動和置頂_jquery
- 2022-03-26 使用C語言如何輸出逆序數_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支