JavaScript中复制对象有深拷贝和浅拷贝两种方式
浅拷贝:浅拷贝只复制对象的第一层属性,而不复制嵌套对象的引用。这意味着如果原始对象包含嵌套对象,浅拷贝后的对象仍然会共享这些嵌套对象的引用。可以使用`Object.assign()`或展开运算符(`...`)来进行浅拷贝。
// 浅拷贝示例 //1.使用Object.assign const originalObj = { a: 1, b: { c: 2 } }; const shallowCopy = Object.assign({}, originalObj);//2. 使⽤展开运算符 let obj1 = { a: 1, b: 2 }; let obj2 = { ...obj1 }; console.log(obj2); // { a: 1, b: 2 }
深拷贝:深拷贝会递归地复制所有嵌套对象及其属性,创建一个全新的对象,不共享任何引用。这样可以确保修改深拷贝后的对象不会影响原始对象。常见的深拷贝方法包括使用`JSON.parse(JSON.stringify())`、第三方库如Lodash的`_.cloneDeep()`等。
// 深拷贝示例 const originalObj = { a: 1, b: { c: 2 } }; const deepCopy = JSON.parse(JSON.stringify(originalObj));
浅拷贝只复制对象的顶层属性
而深拷贝会递归复制所有嵌套属性,确保复制后