在JavaScript中的原型继承,克隆属性。
在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。
在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()
代替...
。