當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
JS中的深拷贝
前言:我們經(jīng)常會(huì)遇到想要將一個(gè)對(duì)象為己所用,但又不能污染原對(duì)象的需求,這就涉及到了js對(duì)象的深拷貝。 比如說(shuō)在VUE的子組件中,父組件傳過(guò)來(lái)的數(shù)據(jù)中若是有對(duì)象,而子組件需要用父組件的數(shù)據(jù)進(jìn)行初始化并且有另做他用的需求。
常規(guī)深拷貝
function deepCopy(obj){let str,copyObj = obj.constructor === Array ? [] : {};if(typeof(obj) != 'object'){return;}else if(window.JSON){copyObj = JSON.parse(JSON.stringify(obj));}else{for(let i in obj){copyObj[i] = typeof(obj[i]) === 'object' ? deepCopy(obj[i]) : obj[i];}}return copyObj; } 復(fù)制代碼存在的問(wèn)題:不能對(duì)特殊對(duì)象進(jìn)行深拷貝【函數(shù)、日期對(duì)象、正則對(duì)象】,以及循環(huán)引用的問(wèn)題。
對(duì)特殊對(duì)象的拷貝----結(jié)構(gòu)化拷貝
結(jié)構(gòu)化拷貝
總結(jié)
- 上一篇: LoRa开发|LoRa模组AT指令开发
- 下一篇: Spring mvc 上下文初始化过程