当前位置: 首页 > 面试题库 >

如何不通过引用将JavaScript对象复制到新变量?[重复]

盖锐进
2023-03-14
问题内容

我在这里写了一个快速的jsfiddle,其中我将一个小的JSON对象传递给一个新变量,并修改了原始变量(而不是新变量)中的数据,但是新变量的数据也得到了更新。这必须意味着JSON对象是通过引用传递的,对吗?

这是我的快速代码:

var json_original = {one:'one', two:'two'}

var json_new = json_original;

console.log(json_original); //one, two
console.log(json_new); //one, two

json_original.one = 'two';
json_original.two = 'one';

console.log(json_original); //two, one
console.log(json_new); //two, one

有没有一种方法可以对JSON对象进行深层复制,以便修改原始变量不会修改新变量?


问题答案:

我发现,如果您不使用jQuery而仅对克隆 简单对象 感兴趣(请参见注释),则可以使用以下内容。

JSON.parse(JSON.stringify(json_original));


 类似资料:
  • 问题内容: 首先,我认为必须将JavaScript转换为PHP,但是后来发现,由于服务器和客户端的执行,我无法这样做。所以现在我只想发送一个变量 到一个PHP变量 假设我单击一个按钮,就会执行JavaScript中的该函数。 现在,我不知道如何将phpvariable分配给JavaScript,以便使用phpvariable在数据库中查找内容。我知道我可以将其添加到URL或某些内容中并刷新页面,但

  • 问题内容: 我正在用JavaScript构建一些对象并将这些对象推入数组,将要使用的键存储在变量中,然后像这样创建对象: 但是,当我尝试检查每个对象的对象数组时,键不是变量键的值。有什么方法可以通过变量设置键的值吗? 问题答案: 您需要先制作对象,然后使用来设置它。 如果您能够使用 ES6 和 Babel ,则可以使用此新功能:

  • 我试图通过这样做来创建现有对象的副本。不知何故,我总是通过引用而不是作为一个新对象创建一个副本。 在任何输入中输入一些数据 单击右上方的按钮 选择重复rn(重复) 编辑副本的一个字段 更改也会立即在第一个对象字段集中执行操作。

  • 问题内容: 浏览OpenJDK 8中的java.util.LinkedList代码,发现以下代码。该代码很简单,但是我对将对第一个节点的引用保存到第二行代码中的常量感到困惑。据我了解,此代码将内联到单行代码中,而无需引用复制。我对吗?如果是这样, 为什么在这种情况和类似情况下需要复制引用 (这种习语可能在java.util.LinkedList的一半方法中找到)? 我的第一个想法是,它以某种方式有

  • 我有一个检索我最近的git提交哈希的命令。 是否可以将其作为环境变量传递给Jenkins管道阶段? 我试过这么做, 但当我在后期回应时 它是空白的。

  • 问题内容: 我正在使用以下内容将检索到的值添加到类中。所有值都将添加到该类的属性中,但是我正在使用compisition(在类中具有class的对象),并且在输出中不显示任何内容。 地址类别如下: 问题答案: 像这样的作品: 将ResultSet行转换为JavaBean。此实现使用反射和BeanInfo类将列名与bean属性名匹配。属性根据以下几个因素与列匹配: 该类具有与列同名的可写属性。名称比