Javascript 如何创建重复对象

Javascript 如何创建重复对象,javascript,object,underscore.js,Javascript,Object,Underscore.js,我有一个对象,其中嵌套了对象,如下所示 var g = { "steps": [{ "location": [{ "a": "1" }, { "a": "2" }] }] }; var h=Object.create(g); 我使用object创建了重复对象,如下

我有一个
对象
,其中嵌套了
对象
,如下所示

var g = {
    "steps": [{
        "location": [{
            "a": "1"
        }, {
            "a": "2"
        }]
    }]
};
var h=Object.create(g);
我使用
object
创建了重复对象,如下所示

var g = {
    "steps": [{
        "location": [{
            "a": "1"
        }, {
            "a": "2"
        }]
    }]
};
var h=Object.create(g);
问题是,如果我在
h
中修改任何内容,
g
也会反映。我如何防止这种情况。我尝试了
下划线
函数(
克隆

修改:

  h["steps"][0]["location"][0]["a"]="3"
修改后:

g
看起来像

h
看起来像

即使我修改了
h
中的任何内容,
g
也不应该被反射

有人能帮我吗

谢谢。

根据文件

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

浅复制对象往往会显示您现在实际遇到的问题。如果您使用的对象没有附加任何方法/变量,则可以执行此操作

var h = JSON.parse(JSON.stringify(g));
这是深度复制

注意:如果对象具有循环引用,则根据文档使用

中描述的技术

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

浅复制对象往往会显示您现在实际遇到的问题。如果您使用的对象没有附加任何方法/变量,则可以执行此操作

var h = JSON.parse(JSON.stringify(g));
这是深度复制


注意:如果对象具有循环引用,请使用

Nice idea中描述的技术。不过要注意循环引用。还有非标准原型的物体。好主意。不过要注意循环引用。以及具有非标准原型的对象。