实现深浅拷贝

浅拷贝是拷贝一层,深层次的引用类型,则共享内存地址,在JS中存在浅拷贝的现象有:

  • Object.assgin
  • Array.prototype.slice()
  • Array.prototype.concat()
  • 使用拓展运算符实现的复制
function shallowClone(obj){
  let res
  for(let key in obj){
  	if(obj.hasOwnProperty(key)){
		res[key]=obj[key]
	}
  }
  return res
}
function deepClone(obj) {  
  // 如果传进来的参数不是对象或者为null,则直接返回  
  if (typeof obj !== 'object' || obj === null) {  
    return obj;  
  }  
    
  let res;  
  if (Array.isArray(obj)) {  
    res = [];  
  } else {  
    res = {};  
  }  
    
  // 遍历对象的每个属性  
  for (let key in obj) {  
	//检查自有的属性
    if (obj.hasOwnProperty(key)) {  
      // 递归调用 deepClone 函数,对属性进行深度克隆  
      res[key] = deepClone(obj[key]);  
    }  
  }  
    
  // 返回克隆后的对象  
  return res;  
}

全部评论

相关推荐

专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-11-27 14:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务