在JavaScript中的原型继承,克隆属性。

10 浏览
0 Comments

在JavaScript中的原型继承,克隆属性。

如何在JavaScript中实现以下内容:

var parent = {
  a: 5,
  b: 6
}
var child = parent;
console.log(child.b); // 6
//现在,如果我改变b的值
parent.b = 7
console.log(parent.b); //7
console.log(child.b); //7

//但是我想保留对象属性的先前值,它现在不应该改变,应该在console.log(child.b)中显示6而不是7。

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

0
0 Comments

在JavaScript中,当你执行var child = parent时,child和parent都指向内存中的同一个对象实例。如果你想将parent的属性复制到child中,你需要创建一个具有与parent对象相同键的新对象。

你可以使用spread ...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
//现在如果我改变b的值
parent.b = 7
console.log(parent.b); //7
console.log(child.b); //6
console.log(child1.b); //6

对于深层次的克隆,我们需要使用其他方法,因为Object.assign()...只复制属性值。如果源值是对对象的引用,它只复制该引用值。

这不是一个完全克隆的方法,只是将对象的第一层级展开。

.J.Crowder 我已经删除了那一行。我没有用那个术语来讲话。尽管是这样,如果你这样想,确实听起来有点混乱。

var child = {...parent}; SyntaxError: Unexpected token ... at createScript (vm.js:56:10) at Object.runInNewContext (vm.js:93:10)

编辑器给出了这个错误,可能是因为编辑器不支持ES6语法,尽管这是一个完全有效的语法。如果有帮助的话,你可以使用Object.assign()代替...

0