JavaScript中无原生深度克隆方法,常用方案有:JSON.parse(JSON.stringify())(简单但局限多)、structuredClone()(现代环境首选,支持循环引用及多种内置类型)、递归手写(完全可控)、lodash.cloneDeep()(生产环境稳定可靠)。

JavaScript 中没有直接的“深度克隆”原生方法,但有多种方式实现对象的完全独立副本。关键在于区分浅拷贝和深拷贝——浅拷贝只复制第一层属性引用,而深拷贝会递归复制所有嵌套层级,确保新对象与原对象彻底隔离。
这是最常用的“伪深拷贝”写法,适合纯数据对象(仅含字符串、数字、布尔值、null、数组、普通对象):
const clone = JSON.parse(JSON.stringify(obj))
TypeError
浏览器(Chrome 98+、Firefox 94+、Edge 98+)和 Node.js 17.0+(需启用 --experimental-structured-clone,Node.js 18.12+ 默认支持)已原生支持:
const clone = structuredClone(obj)
适合需要自定义行为(如跳过某些字段、转换类型、处理特殊构造器)的场景:
立即学习“Java免费学习笔记(深入)”;
Object.prototype.toString.call() 区分 Array、Date、RegExp、Map、Set 等lodash.cloneDeep() 是最成熟的方案之一:
cloneDeep
基本上就这些。选哪种取决于你的运行环境、数据结构复杂度和是否允许外部依赖。开发新项目优先试 structuredClone;兼容老浏览器或需精细控制,用 lodash;临时调试小对象,JSON 方法够用但记得验数据类型。
以上就是如何深度克隆对象_javascript中复制对象的方法有哪些?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号