js手写深拷贝函数

1、对于简单数据类型要实现深拷贝,用简单的复制方法即可;

2、对于引用数据类型,若用简单的复制语句,就只是复制了数据的地址,若源对象发生改变,那么复制的数据也会发生改变,这时就需要深浅拷贝来实现了;浅拷贝是针对一层的复制,即对象中的元素是基本数据类型;当对象的元素不是基本数据类型时,即多层,将用到深拷贝的方式;

let oldObj = {
  name:'tom',
  age:20,
  father:{
    name:'jack'
  }
}
let newObj = deepClone(oldObj)

function deepClone(obj){
  if(!obj || typeof obj!== 'object'){
    return obj
  }
  let result = Array.isArray(obj)?[]:{}
  
  for(let key in obj){
    if(obj.hasOwnProperty("key")){
      if(obj[key] && typeof obj[key] === 'object'){
        result[key] = deepClone(obj[key])
      }else{
        result[key] = obj[key]
      }
    }
  }
  return result
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容