浅拷贝与深拷贝

2021-12-29 15:50阅读 67

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
}
标签
标签
标签