JavaScript 深拷贝与浅拷贝
JavaScript 中的拷贝是指对对象或数组的复制,这个拷贝可以分为深拷贝和浅拷贝。
深拷贝
深拷贝是指拷贝出来的对象和原对象完全独立,互不影响。在深拷贝中,当原对象发生变化时,拷贝出来的对象不会受影响。
在 JavaScript 中,可以使用 JSON 对象的 stringify 和 parse 方法来实现深拷贝:
let obj = { name: "luna", age: 18 };
// 深拷贝
let objCopy = JSON.parse(JSON.stringify(obj));
obj.name = "steve";
console.log(objCopy.name); // luna
浅拷贝
浅拷贝是指拷贝出来的对象和原对象有一定的关联,当原对象发生变化时,拷贝出来的对象也会受到影响。
在 JavaScript 中,可以使用 Object.assign、Object Spread 或者 Array.slice 等方式来实现浅拷贝:
let obj = { name: "luna", age: 18 };
// 浅拷贝
let objCopy = Object.assign({}, obj);
obj.name = "steve";
console.log(objCopy.name); // steve
总结一下,深拷贝是完全独立的对象,可以理解为副本,而浅拷贝是有一定关联性的对象,可以理解为视图。