JS) 얕은 복사, 깊은 복사

kangdari·2020년 3월 30일
0

얕은 복사(Shallow copy)

객체의 프로퍼티를 복사 ( deep 1단계 까지만)
가장 상위 객체만 새로 생성되고 내부 객체들은 참조 관계입니다.
참조 값 = 메모리 값

객체 a를 복사하여 변수 b에 할당했습니다.
변수 b의 b 프로퍼티의 값을 수정하였더니 a의 프로퍼티 값도 함께 변경되었습니다.

이는 a와 b의 b프로퍼티가 같은 메모리 공간을 참조하고 있기 때문입니다.

var a = {
    a: 1,
    b: [1, 2, 3],
}
var b = Object.assign({}, a); 
b.b[0] = 1000
console.log(b) // { a: 1, b: [ 1000, 2, 3 ] }
console.log(a) // { a: 1, b: [ 1000, 2, 3 ] }

깊은 복사(deep copy)

객체의 프로퍼티를 복사하되 모든 depth에 대해서 복사를 한다.
모든 객체들을 새로 생성
서로 다른 메모리 공간을 참조합니다.

새로운 객체를 만들기 위해서는 깊은 복사를 해야 immutable하다 = 불변성하다

0개의 댓글