前端常见面试题(三)深拷贝代码
const obj1{
age: 20,
name: 'xxx',
address: {
city: 'beijing'
}
arr: ['a', 'b', 'c']
}
const obj2 = obj1
obj2.address.city = 'shanghai'
console.log(obj1.address.city) //shanghai 浅拷贝
const obj3 = deepClone(obj1)
obj3.address.city = 'tianjin'
console.log(obj1.address.city) //还是shanghai 深拷贝
function deepClone(obj {}){
if(typeof obj !== ’object' || obj == null){
//obj是null,或者不是对象或数组,直接返回
return obj
}
//初始化返回结果
let result
if(obj instanceof Array){
result = []
} else {
result = {}
}
for(let key in obj){
//保证key不是原型的属性
if(obj hasOwnProperty(key)){
//递归调用!!
result[key] = deepClone(obj[key])
}
}
//返回结果
return result
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界