typescript 实现'深拷贝'
Posted tony-stark
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法指向内存中的同一块地址, 可是我们一般很少去修改方法,所以这样的‘深拷贝‘能满足大多数需求
以上是关于typescript 实现'深拷贝'的主要内容,如果未能解决你的问题,请参考以下文章