我有一个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
看起来像
h
看起来像
即使我在h
中修改了任何内容,g
也不应该反映出来。
任何人都可以帮助我。
感谢。
答案 0 :(得分:4)
根据_.clone
文档,
创建对象的浅层复制克隆。任何嵌套对象或数组都将通过引用复制,而不是重复。
浅层复制的对象往往会显示您实际遇到的问题。如果你使用的对象没有附加任何方法/变量,你可以这样做
var h = JSON.parse(JSON.stringify(g));
这是深层复制。
注意:如果对象具有循环引用,则使用this answer
中描述的技术