You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中如何从JSON值创建新对象且不修改原父对象?

JS对象拷贝:避免修改原对象的方法

你遇到的问题是JS对象的引用类型特性导致的——直接赋值const newChild = parent.child并没有创建新对象,只是把原对象的引用赋值给了newChild,所以修改newChild的属性会同步影响原对象。new Object()没用是因为它无法实现值层面的对象拷贝,只是基于原对象创建了原型关联的新对象,或者你可能用法有误。

以下是几种靠谱的解决方案:

浅拷贝(适合单层对象,比如你的示例场景)

  • 对象展开语法(最简洁直观):
const parent = {
  "child": {"value": 12},
  "otherChild": {"value": 83}
}

const newChild = {...parent.child};
newChild.value = 25;

console.log(parent.child.value); // 输出12,原对象不受影响
  • Object.assign()方法:
const newChild = Object.assign({}, parent.child);
newChild.value = 25;
console.log(parent.child.value); // 输出12

深拷贝(适合多层嵌套对象)

如果你的对象存在多层嵌套结构(比如child内部还有子对象),浅拷贝会失效,这时候可以用JSON序列化的方式实现深拷贝:

const newChild = JSON.parse(JSON.stringify(parent.child));
newChild.value = 25;
console.log(parent.child.value); // 输出12

注意:这种方法无法拷贝函数、Symbol类型、undefined等特殊值,如果涉及这些场景,需要自定义深拷贝函数或使用成熟的工具方法。

内容的提问来源于stack exchange,提问作者Oliver L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:01:22