javascript如何深度拷贝对象_有哪些实现方式

admin 百科 12
JavaScript深度拷贝核心是递归复制所有嵌套层级值以避免引用共享;常用方案包括JSON.parse+JSON.stringify(简洁但局限多)、structuredClone(现代标准,支持丰富类型但不兼容旧环境)、手写递归(兼容性强可定制)、Lodash cloneDeep(生产推荐,覆盖全面)。

javascript如何深度拷贝对象_有哪些实现方式-第1张图片-佛山资讯网

JavaScript 深度拷贝对象,核心是**递归复制所有嵌套层级的值**,避免引用共享。原生没有直接支持深拷贝的 API(Object.assign 和展开运算符都只是浅拷贝),所以需要手动实现或借助可靠方案。

JSON.parse + JSON.stringify(最简但有局限)

适用于纯数据对象:只含字符串、数字、布尔、null、数组、普通对象,且不含函数、undefined、Symbol、Date、RegExp、Map、Set、循环引用等。

  • ✅ 优点:一行代码,无依赖,性能快
  • ❌ 缺点:会丢失函数、undefined、Symbol;Date 变成字符串;NaN 变成 null;无法处理循环引用;正则变成空对象

示例:
const deepCopy = obj => JSON.parse(JSON.stringify(obj));

结构化克隆(structuredClone,现代推荐)

Chrome 98+、Firefox 94+、Node.js 17.0+ 支持,是目前最接近“标准深拷贝”的原生方案。

  • ✅ 优点:支持 Map、Set、Date、RegExp、ArrayBuffer、TypedArray、Error、Blob 等;能处理循环引用;语义准确
  • ❌ 缺点:不支持函数、undefined、Symbol(同 JSON);旧浏览器和低版本 Node 不可用

示例:
const copy = structuredClone(originalObj);

标签: javascript java js node.js json node npm 浏览器 工具 red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~