<aside> 🍦 Moon님, ZeroCho님 의 블로그 글을 통해 많이 배웠습니다. (Moon님의 깊은 복사, 얕은 복사 관련 블로그 방문하기) (ZeroCho님의 객체 복사 관련 블로그 확인하기)
</aside>
목차
Array.prototype.slice()
slice는 단연컨대 플랫한, 즉 1차원 형태의 배열을 잘 복사하는 대표적인 메소드이다. 복사를 시작할 인덱스 부터 지정한 인덱스까지 복사해준다. .slice(start, end + 1)
플랫한 형태를 잘 복사한다는 설명에서 알 수 있듯이 2차원 이상의 중첩된 배열에 대해서는 정확하게 복사하기 힘들다. 콘솔에 한 번 찍어보자.
분명 (2, 5)와 (2, 4) 에 대한 범위는 다르다. 하지만 동일한 결과를 나타낸다는 것을 알 수 있다. 오해가 있을 수 있으니 정확하게 말해보자.
'다중 배열 자체를 복사 못한다는 것이 아니라, 정확한 인덱스에 정확한 값으로 표현하기 힘들다는 것.'
그래서 우리는 slice 메소드를 얕은 복사 방법으로 분류할 수 있다. 그러면 여기서 우리가 말하는 **얕은 복사(Shallow Copy)**는 무엇인가?
얕은 복사와 깊은 복사에 대해서
자바스크립트의 원시 타입 '문자열, 숫자, 불린' 은 '=' 을 이용해서 복사가 손쉽게 가능하다. 아래에 문자열을 간단하게 복사했다. 이렇게 복사하면 객체를 복사하는 것과 다르게 값을 변경해도 원본에 영향을 주지 않는다. 참조하는 것이 아니기 때문이다.