JavaScript中数据类型分为基本类型和复杂类型(引用类型)
基本类型:String,Number,Boolean,undefined,null,Symbol, BigInt
复杂类型:object(包含 Array、Object、Date、RegExp等)
最简单的方法
const clone = JSON.parse(JSON.stringify(json))
转为JSON字符串再解析为JSON对象,缺点是会丢失原型链上的属性
最先想到的递归处理
function deepCopy(data) {
if (!data) return data
if (typeof(data) === 'object' ) {
let cloneTarget = Array.isArray(data) ? [] : {}
for (const key in data) {
cloneTarget[key] = deepCopy(data[key])
}
return cloneTarget
}
return data
}