📜  什么是 JavaScript 中的浅拷贝?(1)

📅  最后修改于: 2023-12-03 15:21:46.388000             🧑  作者: Mango

JavaScript中的浅拷贝

在JavaScript中,有时候我们需要将一个对象或者数组复制一份,以便在不改变原对象的情况下对其进行操作。这时候就需要用到拷贝,而浅拷贝是一种常用的拷贝方式。

什么是浅拷贝

浅拷贝是指创建一个新对象或数组,并将原对象或数组中的引用类型属性直接复制到新对象或数组中,基本类型则直接复制值。因此,新对象与原对象共享同一个引用类型属性,也就是说如果修改了新对象中的引用类型属性,原对象也会发生改变。

如何进行浅拷贝
对象浅拷贝
  1. 使用Object.assign()方法

通过Object.assign()方法可以将多个对象的属性合并到一个新对象中,同时也可以用来进行浅拷贝。

let obj1 = {a: 1, b: {c: 2}};
let obj2 = Object.assign({}, obj1);

obj2.b.c = 3;
console.log(obj1.b.c); // 3
  1. 使用展开运算符

展开运算符...可以将一个对象展开成多个属性,也可以用来进行浅拷贝。

let obj1 = {a: 1, b: {c: 2}};
let obj2 = {...obj1};

obj2.b.c = 3;
console.log(obj1.b.c); // 3
数组浅拷贝
  1. 使用Array.concat()方法

Array.concat()方法可以连接两个或多个数组,返回一个新的数组。也可以用来进行浅拷贝。

let arr1 = [1, [2]];
let arr2 = arr1.concat();

arr2[1][0] = 3;
console.log(arr1[1][0]); // 3
  1. 使用展开运算符

展开运算符...同样可以用来进行数组的浅拷贝。

let arr1 = [1, [2]];
let arr2 = [...arr1];

arr2[1][0] = 3;
console.log(arr1[1][0]); // 3
总结

浅拷贝是一种简单的对象和数组复制方式,它会直接复制基本类型的值,而对于引用类型的值,则是将其引用直接复制到新的对象或数组中。因此,如果修改了新对象中的引用类型属性,原对象也会发生改变。所以在开发中应该根据实际需求来选择适合的拷贝方式。