js

  • 第一层是值拷贝,下面的层就都是引用拷贝

实现方式

拓展运算符

const original = { a: 1, b: { c: 2 } };
const shallowCopy = { ...original };
 
shallowCopy.a = 3;
shallowCopy.b.c = 4;
console.log(original);// { a: 1, b: { c: 4 } }
console.log(shallowCopy);// { a: 3, b: { c: 4 } }

Object.assign() 覆盖对象

const original = { a: 1, b: { c: 2 } };
const shallowCopy = Object.assign({}, original);
 
shallowCopy.a = 3;
shallowCopy.b.c = 4;
console.log(original);// { a: 1, b: { c: 4 } }
console.log(shallowCopy);// { a: 3, b: { c: 4 } }

js 数组的slice方法 获取数组片段

const original = [1, 2, { a: 3 }];
const shallowCopy = original.slice();
 
shallowCopy[0] = 10;
shallowCopy[2].a = 30;
console.log(original);// [1, 2, { a: 30 }]
console.log(shallowCopy);// [10, 2, { a: 30 }]