var b = {};
var a = b;
b.test = 123;
console.log(a.test);
我正在尝试编写类似于上面的代码,但是为了不必描述上下文,我将显示^
在a = b
行之后我想丢失从a到b的引用,所以我可以更新b而不会影响a,反之亦然
这可能吗?
答案 0 :(得分:6)
您可以使用Object.assign()
克隆对象:
var a = Object.assign({}, b);
答案 1 :(得分:0)
您可以使用JSON.stringify(obj)
,然后使用JSON.parse
字符串。
所以它会是这样的:
let obj= {
hello: 'hello'
};
let string = JSON.stringify(obj);
let newObj = JSON.parse(string);
答案 2 :(得分:-1)
使用 Object.assign()
、Object.create()
或展开运算符将不能帮助您处理对象中的数组(适用于非数组属性虽然)。
let template = {
array: []
};
let copy = { ...template };
console.log(template.array); // As expected, results in: []
copy.array.push(123);
console.log(template.array); // Output: [123]
但是这可以使用JSON.stringify()
和JSON.parse()
解决,正如已经说过。
let template = {
array: []
};
let copy = JSON.parse(JSON.stringify(template));
console.log(template.array); // Output: []
copy.array.push(123);
console.log(template.array); // Output: []
想知道这是否是最合适的解决方案... 如果我遗漏了什么,请原谅,我只是一个初学者。