배열의 concat()이나 slice() 메서드로도 얕은 복사를 할 수 있습니다. 메서드의 인수로 아무것도 넣지 않으면 됩니다.
const array = [{ j: 'k' }, { l: 'm' }];
const shallow2 = array.slice(); // 얕은 복사
const shallow3 = array.concat(); // 얕은 복사
console.log(array === shallow2); // false
console.log(array[0] === shallow2[0]); // true
console.log(array === shallow3); // false
console.log(array[0] === shallow3[0]); // true
깊은 복사에는 JSON.parse()와 JSON.stringify()라는 메서드를 사용합니다. 원래 JSON.parse()는 문자열을 객체로, JSON.stringify()는 객체를 문자열로 만드는 메서드입니다. 그런데 두 메서드를 조합해 사용하면 대상 객체를 깊은 복사할 수 있습니다.
const array = [{ j: 'k' }, { l: 'm' }];
const deep = JSON.parse(JSON.stringify(array)); // 깊은 복사
console.log(array === deep); // false
console.log(array[0] === deep[0]); // false