如何在Javascript中创建对象的深度副本

如何在Javascript中创建对象的深度副本,javascript,arrays,object,deep-copy,Javascript,Arrays,Object,Deep Copy,我想制作一个对象的深度副本,比如说我有一个对象: const oriObj = { id: 1, version: 1, person: 'jack' }; 因此,在一个点击事件之后,oriObj被设置为一个空数组[],但我仍然希望获得oriObj中的原始值,例如id和版本。我试图进行深度复制,因此无论oriObj如何变化,一旦我在开始时获得oriObj的值,我都会对其进行深度复制并存储,这样它就不会变成空数组。我尝试了几种方法,但都不起作用,在单击事件之后,我仍然得到空数组。如果

我想制作一个对象的深度副本,比如说我有一个对象:

const oriObj = {
  id: 1,
  version: 1,
  person: 'jack'
};

因此,在一个
点击事件之后,
oriObj
被设置为一个空数组
[]
,但我仍然希望获得
oriObj
中的原始值,例如id和版本。我试图进行深度复制,因此无论
oriObj
如何变化,一旦我在开始时获得oriObj的值,我都会对其进行深度复制并存储,这样它就不会变成空数组。我尝试了几种方法,但都不起作用,在单击事件之后,我仍然得到空数组。

如果它是一个没有方法的简单对象,一种快速方法是序列化对象,然后再次解析它

const oriObj={
id:1,
版本:1,,
人物:“杰克”
};
const copy=JSON.parse(JSON.stringify(oriObj));
oriObj.id=“更改此”;

控制台日志(oriObj,副本)如果它是一个没有方法的简单对象,一种快速的方法是序列化该对象,然后再次解析它

const oriObj={
id:1,
版本:1,,
人物:“杰克”
};
const copy=JSON.parse(JSON.stringify(oriObj));
oriObj.id=“更改此”;

控制台日志(oriObj,副本)复制对象有两种方法,一种是扩展运算符,即

let objCopy={...originalObject}
如果您的内存中有嵌套的深层对象,则可以简单地使用

let objCopy=JSON.parse(JSON.stringify(originalObject))

此外,lodash.js和underline.js库提供了删除克隆对象的方法。制作对象副本有两种方法:一种是扩展操作符,即

let objCopy={...originalObject}
如果您的内存中有嵌套的深层对象,则可以简单地使用

let objCopy=JSON.parse(JSON.stringify(originalObject))

另外,lodash.js和underline.js库提供了删除克隆对象的方法

到目前为止您尝试了什么?可能你只是犯了个简单的错误。如果您发布您的尝试,我们可能能够诊断您做错了什么。这是否回答了您的问题?如果您觉得“点击事件”足够相关,可以提及,那么您可能应该展示该代码。你可以很容易地在谷歌上找到几种克隆对象的方法,但如果这些方法对你不起作用,那么你需要展示足够的代码,以便我们能够找出原因。到目前为止你尝试了什么?可能你只是犯了个简单的错误。如果您发布您的尝试,我们可能能够诊断您做错了什么。这是否回答了您的问题?如果您觉得“点击事件”足够相关,可以提及,那么您可能应该展示该代码。你可以很容易地在谷歌上找到几种克隆对象的方法,但如果这些方法对你不起作用,那么你需要显示足够的代码,以便我们能够找出原因。