深拷贝和浅拷贝


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

总结一下,深拷贝是完全独立的对象,可以理解为副本,而浅拷贝是有一定关联性的对象,可以理解为视图。


文章作者: PaoMo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 PaoMo !
  目录