如何使用Javascript制作对象的深层副本

问题描述

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

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

因此,在click event之后,oriObj被设置为空数组[],但是我仍然想获取oriObj中的原始值,例如id和版本。我正在尝试进行深层复制,因此无论oriObj如何变化,一开始就获得oriObj的值后,我都会对其进行深层复制并存储在其中,这样它就不会成为空数组。我尝试了几种方法,但无法正常工作,在单击事件之后,我仍然得到空数组。

解决方法

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

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

const copy = JSON.parse(JSON.stringify(oriObj));

oriObj.id = "changed this";

console.log(oriObj,copy);

,

有两种方法可以复制对象,一种是散布运算符,即

let objCopy={...originalObject}

如果您在其中嵌套了深层对象,则可以简单地使用

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

lodash.js和underscore.js库还提供了使克隆对象失去作用的方法

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...