javascript에서의 Array 복제
참조형 데이터인 Array는 값이 담긴 주솟값들의 묶음을 참조하는 형식이다
const Arr1 = ['a', 'b', 'c', 'd']
로 생성한 경우의 메모리
주소 | 1002 | ... | 5001 | 5002 | 5003 | 5004 | 5005 | ... |
데이터 | 이름 : Arr1 값 : @5001 |
... | @7100~ | 'a' | 'b' | 'c' | 'd' | ... |
주소 | ... | 7100 | 7101 | 7102 | 7103 | 7104 | 7105 | ... |
데이터 | ... | 이름: 0 값: @5002 |
이름: 1 값: @5003 |
이름: 2 값: @5004 |
이름: 3 값: @5005 |
이름: Arr2 값: @5001 |
... |
이 때 const Arr2 = Arr1 로 복제하고나면 @1002만 복사한다(@7105)
그래서 Arr2를 통해 접근한 Arr2[2]를 변경하면 Arr1[2]도 변경된다.
위의 복사를 얕은 복사라고 한다.
깊은 복사
배열의 복사
Array.prototype.slice()를 사용해 새로운 배열을 반환한다.
참고) www.inflearn.com/course/%ED%95%B5%EC%8B%AC%EA%B0%9C%EB%85%90-javascript-flow#
Javascript 핵심 개념 알아보기 -JS Flow
참고) bbaktaeho-95.tistory.com/37
객체의 깊은 복사, JSON으로 복사도 나와있음
'TIL' 카테고리의 다른 글
2021.02.17 (0) | 2021.03.04 |
---|---|
2021.02.16 (0) | 2021.03.04 |
2021.01.25 (0) | 2021.01.25 |
2021.01.21 (0) | 2021.01.21 |
2021.01.20 (0) | 2021.01.20 |