码迷,mamicode.com
首页 > 其他好文 > 详细

typescript 实现'深拷贝'

时间:2020-02-16 11:29:57      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:javascrip   引号   函数   对象   需求   lse   function   类型   type   

在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方法指向内存中的同一块地址,  可是我们一般很少去修改方法,所以这样的‘深拷贝‘能满足大多数需求

typescript 实现'深拷贝'

标签:javascrip   引号   函数   对象   需求   lse   function   类型   type   

原文地址:https://www.cnblogs.com/tony-stark/p/12316058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!