Til Home

2020-08-10-TIL

Fact

  • 10일차

Feelings

  • ㅠㅠ 넘 어렵다.

Findings

  • 객체를 복사할 때, 얕은 복사와 깊은 복사 차이점에 대해 정리한다.
  • 모든 객체의 값은 주소로 연결 되어 있다.

단순 복사

> const a = {}
> const b = a
> a['a'] = 1
1
> b
{ a: 1 }
> 

a 값은 실제로 주소 이므로 b = a를 할시에 b에 a값의 주소를 저장 하는것이다. 그래서 a를 수정 하면 a주소에 있는 값이 변하므로 b도 같은 주소를 갈으키는 값도 변한다.

얕은 복사 1

  • 1 depth만 복사 한다.

깊은 복사 객체 안에 있는 객체들을 다시 새롭게 생성을 하여 저장 하는 방법이다.

  
```javascript
> const c = {}
> c.a = { d:2 }
> c
> c.b = 4

> c
{ a: { d: 2 }, b: 4 }

> d = Object.assign({},c)
{ a: { d: 2 }, b: 4 }

> c.b = 0
0

> c
{ a: { d: 2 }, b: 0 }
> d
{ a: { d: 2 }, b: 4 }

> c.a.d =0
0

> c
{ a: { d: 0 }, b: 0 }
> d
{ a: { d: 0 }, b: 4 }

보시다 시피 1depth는 영향이 안 끼쳐지지만 그 아래는 값이 같이 바뀐다.

깊은 복사.

모든 객체들을 새로 복사 해서 넣는 구조이다.

> c.a.d = 5
5
> c.b = 2
2
> c
{ a: { d: 5 }, b: 2 }
> e = JSON.parse(JSON.stringify(c))
{ a: { d: 5 }, b: 2 }
> c.a.d = 0
0
> c.b = 0
0
> c
{ a: { d: 0 }, b: 0 }
> e
{ a: { d: 5 }, b: 2 }
> 

Future Action

  • 설계를 미리 짜고 코드를 짰는데도 중간중간에 처음 설계 한게 맞지 않아서 나중에 막무가내로 짜기 시작했다. 시간도 없어서 막 짜다 보니 코드가 산으로 갔다. 음… 똥싼 코드 시간 날때 다시 보면서 수정 하자.