javascript中的原型继承,克隆属性

时间:2019-07-09 10:49:46

标签: javascript

如何在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

https://codebunk.com/b/696347863/

1 个答案:

答案 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()...复制属性值。如果源值是对对象的引用,则仅复制该引用值。