在JavaScript中向其添加变量时,不要更改主对象

时间:2015-11-10 14:22:01

标签: javascript

我需要使用全局声明的变量,但要修改它以使用函数:

var example = {
    selected: '0',
    list: {
        1: {
            value: '1',
            name: "example 1"
        },
        2: {
            value: '2',
            name: "example 2"
        },
        3: {
            value: '3',
            name: "example 3"
        }
    }
};

window.load(function () {
    var example2 = example;
    example2.info = "newinfo";
    // Use example 2
})

问题是,在那之后,如果我是console.log(例子),它包含" info"变量,绝对不需要。我甚至不明白它为什么会这样,我故意定义了一个新变量来避免这种情况。

1 个答案:

答案 0 :(得分:4)

单个赋值保留对原始对象的引用。因此,任何更改都会反映到原始对象。

只需使用JSON.stringifyJSON.parse即可获得副本。

var example2 = JSON.parse(JSON.stringify(example));