我有一个带有嵌套对象
的对象
,如下所示。
var g = {
"steps": [{
"location": [{
"a": "1"
}, {
"a": "2"
}]
}]
};
我使用Object
创建了重复的对象,如下所示。
var h=Object.create(g);
问题是,如果我修改 h
中的任何内容,g
也会反射(reflect)出来。我怎样才能防止这种情况。我尝试使用 underscore
函数(克隆
)。
修改:
h["steps"][0]["location"][0]["a"]="3"
修改后:
g
看起来像
h
看起来像
即使我修改了 h
中的任何内容,g
也不应该被反射(reflect)。
谁能帮帮我。
谢谢。
最佳答案
根据 _.clone
文档,
Create a shallow-copied clone of the object. Any nested objects or arrays will be copied by reference, not duplicated.
浅复制对象往往会显示您现在实际遇到的问题。如果您使用的对象没有附加任何方法/变量,您可以执行此操作
var h = JSON.parse(JSON.stringify(g));
这会进行深度复制。
注意:如果对象具有循环引用,则使用 this answer 中描述的技术。
关于javascript - 如何创建重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22555959/