我需要使用全局声明的变量,但要修改它以使用函数:
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"变量,绝对不需要。我甚至不明白它为什么会这样,我故意定义了一个新变量来避免这种情况。
答案 0 :(得分:4)
单个赋值保留对原始对象的引用。因此,任何更改都会反映到原始对象。
只需使用JSON.stringify
和JSON.parse
即可获得副本。
var example2 = JSON.parse(JSON.stringify(example));