在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方法指向內存中的同一塊地址, 可是我們一般很少去修改方法,所以這樣的'深拷貝'能滿足大多數需求