如何创建重复对象

时间:2014-03-21 10:19:13

标签: javascript object underscore.js

我有一个object嵌套objects,如下所示。

var g = {
    "steps": [{
        "location": [{
            "a": "1"
        }, {
            "a": "2"
        }]
    }]
};

我使用Object创建了重复的对象,如下所示。

var h=Object.create(g);

问题是,如果我修改h中的任何内容,g也会反映出来。我如何阻止这种情况。我尝试使用underscore函数(clone)。< / p>

改性:

  h["steps"][0]["location"][0]["a"]="3"

修改后:

g看起来像

enter image description here

h看起来像

enter image description here

即使我在h中修改了任何内容,g也不应该反映出来。

任何人都可以帮助我。

感谢。

1 个答案:

答案 0 :(得分:4)

根据_.clone文档,

  

创建对象的浅层复制克隆。任何嵌套对象或数组都将通过引用复制,而不是重复。

浅层复制的对象往往会显示您实际遇到的问题。如果你使用的对象没有附加任何方法/变量,你可以这样做

var h = JSON.parse(JSON.stringify(g));

这是深层复制。

注意:如果对象具有循环引用,则使用this answer

中描述的技术