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

  • 相关阅读:
    普通平衡树(treap与splay模板)
    NOIP2009T4 靶形数独
    单调队列模板
    NOIP2010引水入城
    数差
    NOIP2016DAY2T1 组合数问题
    NOIP2016 D2T3 愤怒的小鸟
    NOIP双栈排序
    膜拜
    斐波那契数列
  • 原文地址:https://www.cnblogs.com/tony-stark/p/12316058.html
Copyright © 2011-2022 走看看