더북(TheBook)

배열의 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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.