如何在javascript中实现以下目的
var parent = {
a: 5,
b: 6
}
var child = parent;
console.log(child.b); // 6
//now if I change the value of b
parent.b = 7
console.log(parent.b); //7
console.log(child.b); //7
///但是我想保留object属性的先前值,现在不应该更改。在console.log(child.b)的情况下,它应该显示6而不是7
答案 0 :(得分:0)
当您执行var child = parent
时,子代和父代都引用内存中的同一对象实例。如果要将父对象的属性复制到子对象,则需要使用与父对象相同的键创建一个新对象。
您可以为此使用扩展...
或object.assign
var parent = {
a: 5,
b: 6
}
var child = {...parent};
var child1 = Object.assign({}, parent);
console.log(child.b); // 6
console.log(child1.b); // 6
//now if I change the value of b
parent.b = 7
console.log(parent.b); //7
console.log(child.b); //6
console.log(child1.b); //6
对于深度克隆,我们需要使用其他替代方法,因为
Object.assign()
和...
复制属性值。如果源值是对对象的引用,则仅复制该引用值。