当前位置:网站首页>引用类型的浅拷贝与深拷贝小记
引用类型的浅拷贝与深拷贝小记
2022-08-09 03:15:00 【Youser511】
浅拷贝
let obj = {
uname: "张三",
age: 22,
sex: "男",
color:['red','yellow','pink']
}
let newObj = {
}
只拷贝最外层的拷贝方式—浅拷贝
for (let key in obj) {
newObj[key] = obj[key]
}
或者
Object.assign(newObj,obj)
深拷贝
深拷贝 所有层都拷贝的方式
let a = {
uname: "张三",
age: 22,
sex: "男",
color: ['red', 'yellow', 'pink'],
message: {
index: 1,
score:100
}
}
let b = {
}
循环再循环—递归,不常用,但要知道。
function kaobei (newObj, obj) {
for (let key in obj) {
// instanceof判断一个数据具体是哪一种object
if (obj[key] instanceof Array) {
// 循环 obj[key]是数组
newObj[key] = []
kaobei(newObj[key],obj[key])
}else if (obj[key] instanceof Object) {
// 遍历
newObj[key] = {
}
kaobei(newObj[key],obj[key])
}else {
newObj[key] = obj[key]
}
}
}
kaobei(b, a)
或者直接用JSON,常用。
let b = JSON.parse(JSON.stringify(a))
边栏推荐
- 创建一个DAPP的全流程
- JS 运行机制最全面的一次梳理
- 01| 数据类型
- 作为常用的荧光标记试剂Cy5 亚磷酰胺(CAS号:182873-67-2)有哪些特点了?
- ERROR:Module not found: Error: Can‘t resolve ‘core-js/modules/es.promise.js‘ in ‘address‘
- 数据库工具DataGrip V2022.2正式发布——支持导入多个 CSV 文件的选项
- 甲乙丙丁加工零件,加工的总数是370, 如果甲加工的零件数多10,如果乙加工的零件数少20,如果丙加工的 零件数乘以2,如果丁加工的零件数除以2,四个人的加工数量相等,求甲乙丙丁各自加工多少个零件?
- C专家编程 第9章 再论数组 9.7 轻松一下---软件/硬件平衡
- 2027年加密市场将会发生什么?思维的跨越?长期预测无法脱离形势变化
- redis的四种模式
猜你喜欢
unshift() :将一个或多个元素添加到数组的开头
那些关于DOM的常见Hook封装(一)
LeetCode_43_字符串相乘
What are the functions and applications of the smart counter control board?
盘点检索任务中的损失函数
2022微服务面试题 最新50道题(含答案解析)
ReentrantLock源码分析
甲乙丙丁加工零件,加工的总数是370, 如果甲加工的零件数多10,如果乙加工的零件数少20,如果丙加工的 零件数乘以2,如果丁加工的零件数除以2,四个人的加工数量相等,求甲乙丙丁各自加工多少个零件?
权限系统就该这么设计(万能通用),稳的一批!
Exchange VLAN experiment
随机推荐
JSP入门
【面试整理】-- 多线程
The condition variable condition_variable implements thread synchronization
如何应对网络攻击?
JS 运行机制最全面的一次梳理
JS ES5也可以创建常量?
2022微服务面试题 最新50道题(含答案解析)
光刻机随感
flat() :递归地将数组展平到指定的深度
【meet host】
126. 单词接龙 II
redis的四种模式
深度学习——以天气识别为例,探讨如何保存神经网络模型
数组与切片
el-popover 内嵌 el-table 后位置错位 乱飘 解决方案
Chrome的JSON美化插件
条件变量condition_variable实现线程同步
Redis的过期策略和淘汰策略
宝塔实测-在线药店商城源码带WAP版
宝塔实测-TinkPHP5.1框架小程序商城源码