【问题标题】:How to create duplicate object如何创建重复对象
【发布时间】:2014-04-28 15:43:19
【问题描述】:

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

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

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

var h=Object.create(g);

问题是,如果我修改 h,g 中的任何内容也反映。我该如何防止这种情况。我尝试使用 underscore 函数(clone)。

修改:

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

修改后:

g 看起来像

h 看起来像

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

谁能帮帮我。

谢谢。

【问题讨论】:

    标签: javascript object underscore.js


    【解决方案1】:

    根据_.clone 文档,

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

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

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

    这会做深拷贝。

    注意:如果对象有循环引用,则使用this answer中描述的技术

    【讨论】:

    • 好主意。不过要注意循环引用。以及具有非标准原型的对象。
    猜你喜欢
    • 1970-01-01
    • 2013-02-08
    • 2011-10-22
    • 2012-07-06
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多