深拷贝的简单实现

第一种方法

function deepClone(arg){
  if(arg === null || typeof arg !== 'object'){
    return arg
  } 
  if(arg instanceof Array){
    var copy= []
    for(let i = 0;i<arg.length;i++){
      copy.push(arg[i])
    }
    return copy
  }
  if(arg instanceof Date){
    var copy = new Date()
    copy.setTime(arg.getTime())
    return copy
  }
  if(arg instanceof Object){
    let copy = {}
    for(let key in value){
      if(arg.hasOwnProperty(key)){
        copy[key] = deepClone(arg[key])
      }
    }
    return copy
  }
}

var arg = [1,2,{a:'xxx',b:['yyy',{s:1}]}]
var arr1 = deepClone(arg)

console.log(arr1==arg);
console.log(arg);

第二种方法:

function deepClone(arr){
  return $.extend([], arr); //[]这里是数组方法,如果是对象深拷贝就是{}
}
var arr1= [1,[22,222],3,'jjj']
var arr2 = deepClone(arr1)
arr1.push(arr1)
console.log(deepClone(arr2));
console.log(arr1);

第三种方法:

var a = { n: {name:'whatever'} }; 
var b = JSON.parse( JSON.stringify(a) ); 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 坎坷生平万古诗,文章牵累入乌台。 艰危不避谈生死,放达难逃受苦悲。 何必雄文惊大梦,但求肝胆破藩篱。 阶前任意花开...
    衙斋掾吏阅读 4,572评论 4 11
  • 100个基本: 断舍离,纠结着无法舍弃当前的工作,就是一种对存量的依赖,不敢做清零。内心是对于所有权的依赖和迷恋、...
    诗雅Silvia阅读 2,498评论 0 0
  • 上高中时开始看韩寒的作品,买过很多他的书,貌似还有一本自传,知道他不仅会写作,还会赛车、唱歌,作为高中生的我觉得这...
    生而活阅读 3,073评论 1 3

友情链接更多精彩内容