在javascript中删除对另一个对象的引用

时间:2016-06-30 11:58:04

标签: javascript

var b = {};
var a = b;
b.test = 123;
console.log(a.test);

我正在尝试编写类似于上面的代码,但是为了不必描述上下文,我将显示^

a = b行之后我想丢失从a到b的引用,所以我可以更新b而不会影响a,反之亦然

这可能吗?

3 个答案:

答案 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: [] 

想知道这是否是最合适的解决方案... 如果我遗漏了什么,请原谅,我只是一个初学者。