📅  最后修改于: 2023-12-03 15:21:46.388000             🧑  作者: Mango
在JavaScript中,有时候我们需要将一个对象或者数组复制一份,以便在不改变原对象的情况下对其进行操作。这时候就需要用到拷贝,而浅拷贝是一种常用的拷贝方式。
浅拷贝是指创建一个新对象或数组,并将原对象或数组中的引用类型属性直接复制到新对象或数组中,基本类型则直接复制值。因此,新对象与原对象共享同一个引用类型属性,也就是说如果修改了新对象中的引用类型属性,原对象也会发生改变。
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
展开运算符...
可以将一个对象展开成多个属性,也可以用来进行浅拷贝。
let obj1 = {a: 1, b: {c: 2}};
let obj2 = {...obj1};
obj2.b.c = 3;
console.log(obj1.b.c); // 3
Array.concat()
方法Array.concat()
方法可以连接两个或多个数组,返回一个新的数组。也可以用来进行浅拷贝。
let arr1 = [1, [2]];
let arr2 = arr1.concat();
arr2[1][0] = 3;
console.log(arr1[1][0]); // 3
展开运算符...
同样可以用来进行数组的浅拷贝。
let arr1 = [1, [2]];
let arr2 = [...arr1];
arr2[1][0] = 3;
console.log(arr1[1][0]); // 3
浅拷贝是一种简单的对象和数组复制方式,它会直接复制基本类型的值,而对于引用类型的值,则是将其引用直接复制到新的对象或数组中。因此,如果修改了新对象中的引用类型属性,原对象也会发生改变。所以在开发中应该根据实际需求来选择适合的拷贝方式。