typescript 實現'深拷貝'


在typescript中要實現深拷貝可以這樣:

  

 let a:object={
     c:1,
     b:[2],
     e:function(){
   
}
}

 //需將copya的類型指定為any,這樣才能夠使其能夠任意添加屬性
   let copya:any={};
  //最關鍵的是注意 下面 當a中有方法時,json.parse(json.stringify(xx))是無效的
   for(let k in a){
   if(typeof a[k]=='function'){
      //如果是方法直接賦值就可以了
     copy[k] = a[k]
   }else{
      copya[k] = JSON.parse(JSON.stringify(a[k]))
}
}

  !!注意,比較重要的一點,這里的深打了引號,除了原對象非函數類型的屬性,都已經深拷貝成功,但是如果是函數的話,仍舊為淺拷貝,copya中的e方法和a中的e方法指向內存中的同一塊地址,  可是我們一般很少去修改方法,所以這樣的'深拷貝'能滿足大多數需求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM