深拷贝

深拷贝的定义
深拷贝是指在复制对象时,不仅复制对象本身,还递归地复制对象所引用的所有子对象,确保新对象与原对象完全独立,互不影响。

1、使用JSON序列化实现深拷贝
通过将对象转换为JSON字符串,然后再将JSON字符串转换回对象,可以实现深拷贝。这种方法简单易用,但有局限性,例如无法处理函数、循环引用等。

function deepCopyUsingJSON(obj) {
return JSON.parse(JSON.stringify(obj));
}

2、使用递归函数实现深拷贝
通过递归遍历对象的每一个属性,并创建新的对象或数组来存储这些属性,可以实现深拷贝。这种方法可以处理大多数数据类型,包括函数和循环引用。

function deepCopyUsingRecursion(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}

let copy; 
if (Array.isArray(obj))  { 
    copy = []; 
    for (let i = 0; i < obj.length;  i++) { 
        copy[i] = deepCopyUsingRecursion(obj[i]); 
    } 
} else { 
    copy = {}; 
    for (let key in obj) { 
        if (obj.hasOwnProperty(key))  { 
            copy[key] = deepCopyUsingRecursion(obj[key]); 
        } 
    } 
} 

return copy; 

}

3、使用第三方库实现深拷贝
许多第三方库提供了深拷贝的功能,例如Lodash库中的_.cloneDeep方法。这些库通常经过了严格的测试和优化,可以处理各种复杂的数据结构。

const _ = require('lodash');

function deepCopyUsingLodash(obj) {
return _.cloneDeep(obj);
}

posted @ 2024-09-20 08:56  God、夜  阅读(30)  评论(0)    收藏  举报