浅拷贝与深拷贝

126 阅读1分钟

拷贝

浅拷贝

1.Object.assign()

   const obj = {
    user:'yyd',
    age:18
}
const new_obj = Object.assign({},obj);
console.log(new_obj );
console.log(new_obj === obj); //true

2. ...拷贝

const obj = {
    user:'yyd',
    age:18
}
const new_obj = {...obj};
console.log(new_obj == obj);//true

深拷贝

1.JSON.parse(JSON.stringify())

const obj = {
    user:'yyd',
    age:18
}
const new_obj = JSON.parse(JSON.stringify(obj));
console.log(new_obj);
console.log(new_obj === obj);//false

2.递归遍历浅拷贝

const obj = {
    user:'yyd',
    age:18
}
function deep_copy(obj){
    let result = null;
    if(!(obj instanceof Object)){
        return obj;
    }else{
        result = Array.isArray(obj)?[]:{};
    }
    for(const key in obj){
        result[key] = deep_copy(obj[key]);
    }
    return result;
}
console.log(deep_copy(obj));