前端深浅拷贝详解:浅拷贝与深拷贝的区别及应用场景 - JavaScript对象复制
前端深浅拷贝内容:在前端开发中,深拷贝和浅拷贝是常见的两种对象复制方式。
浅拷贝是指将原始对象的引用复制给新的对象,新旧对象指向同一块内存地址。当修改新对象时,原始对象也会受到影响。常见的浅拷贝方式包括Object.assign()、展开运算符(...)以及Array.prototype.slice()等。
示例代码:
let obj1 = {name: 'John', age: 20};
let obj2 = Object.assign({}, obj1); // 使用Object.assign()进行浅拷贝
obj2.name = 'Alice';
console.log(obj1); // {name: 'John', age: 20}
console.log(obj2); // {name: 'Alice', age: 20}
深拷贝是指将原始对象的所有属性逐个复制给新的对象,新旧对象拥有独立的内存地址,修改新对象不会影响原始对象。常见的深拷贝方式包括JSON.parse(JSON.stringify())、递归复制对象等。
示例代码:
let obj1 = {name: 'John', age: 20};
let obj2 = JSON.parse(JSON.stringify(obj1)); // 使用JSON.parse(JSON.stringify())进行深拷贝
obj2.name = 'Alice';
console.log(obj1); // {name: 'John', age: 20}
console.log(obj2); // {name: 'Alice', age: 20}
需要注意的是,使用JSON.parse(JSON.stringify())进行深拷贝时,原始对象中的函数、正则表达式、循环引用等特殊类型会丢失。因此,在复制包含这些特殊类型的对象时,需要使用其他方式实现深拷贝。
原文地址: https://www.cveoy.top/t/topic/qciP 著作权归作者所有。请勿转载和采集!