本文介绍了JavaScript中实现深拷贝的几种常见方法。首先讲解了利用JSON.parse和JSON.stringify进行转换的简单方式,随后深入分析了通过递归遍历处理对象及循环引用的实现逻辑,最后推荐了使用Lodash库中的cloneDeep函数进行高效拷贝的方案。
一、采用 JSON 序列化方式
该方案操作最为简便。
JSON.parse(JSON.stringify(obj))二、采用递归算法
利用递归机制对对象进行深度遍历,逐一复制各属性值。需区分处理值类型属性与包含子对象的属性。为防止循环引用引发死循环,必须记录已遍历的对象。
const deepClone = obj => {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let result = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = deepClone(obj[key]);
}
}
return result;
}三、利用第三方库
Lodash
Lodash 是一款风格统一、模块化且高性能的 JavaScript 工具库。
npm i --save lodashimport {cloneDeep} from 'lodash';const obj1 = {a: {b: 2}};
const obj2 = cloneDeep(obj1);总结
至此,关于JS实现深拷贝的几种简单方法的文章介绍完毕,更多相关JS实现深拷贝内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!