深拷貝的簡單實現(xiàn)

第一種方法

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); //[]這里是數(shù)組方法,如果是對象深拷貝就是{}
}
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) ); 
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 坎坷生平萬古詩,文章牽累入烏臺。 艱危不避談生死,放達難逃受苦悲。 何必雄文驚大夢,但求肝膽破藩籬。 階前任意花開...
    衙齋掾吏閱讀 1,046評論 4 11
  • 100個基本: 斷舍離,糾結著無法舍棄當前的工作,就是一種對存量的依賴,不敢做清零。內(nèi)心是對于所有權的依賴和迷戀、...
    詩雅Silvia閱讀 344評論 0 0
  • 上高中時開始看韓寒的作品,買過很多他的書,貌似還有一本自傳,知道他不僅會寫作,還會賽車、唱歌,作為高中生的我覺得這...
    生而活閱讀 442評論 1 3

友情鏈接更多精彩內(nèi)容