본문 바로가기

오늘 한 일을 기록하자/TIL

201104_TIL

오늘한 일

  • 객체지향 Programming - Javascript / ES5 버전과 ES6 버전에서 Class 생성하기
  • prototype, constructor, this, new, instance 용어 정리
  • 함수의 매개변수의 개수가 유동적일 때 작성방법
  • 함수에서 매개변수의 Default 값을 지정해주는 방법]
  • shallow copy(얕은 복사)와 deep copy(깊은 복사)에 대해 다시한번 고찰(참고 링크1, 참고 링크2)
  • Object.assign() 로 shallow copy 하기
  • 전개연산자 ... 로 shallow copy 하기
  • 재귀함수로 deep copy 하기
  • JSON.stringfy() 를 사용해 deep copy 하기
  • js lodash library 의 _.cloneDeep 사용해 deep copy 하기 [deep copy 추천 방법]

 

오늘 느낀점

  • 함수의 매개변수의 개수가 유동적일 때 [ES5] : arguments 키워드 사용한다. / [ES6] : Rest Parameter ... 라는 전개 연산자(spread) 를 사용한다. [차이점] arguments 는 배열같이 보이지만 배열이 아닌 유사배열이고, 전개 연산자(spread 문법) ... 는 배열이다.
  • shallow copy 와 deep copy 를 이해하기 위해서는 먼저, value type 과 reference type 을 알아야한다. 이 사실을 몰랐을 때 나는 단지 shallow copy 는 원본의 주소를 reference(참조)하기 때문에 변경되는 copy 이고, deep copy 는 value(값) 자체를 copy하는 것이라고 이해를 했다. 결과만 보면 맞는 이야기인것 같지만, 기준이 있다. primitive value(원시값) 은  value type 으로 값 자체를 copy 한다. 반면에 객체 같은 reference type 은 값 자체가 아닌 메모리 주소값 참조를 copy 한다. [주의할점] deep copy 라고해서 객체의 모든 것을 복사하지 않는다는 점을 주의해야 한다. 예를 들어 객체 내부에 객체가 있는 형태의 경우에는 하위 객체는 완전히 copy 되지 않고, 참조한다.
  • let 키워드로 선언한 변수가 reference type 일 때, 재할당을 할 경우 heap memory (주소)가 바뀌어 비효율적인 방법이다. 따라서 재할당이 빈번한 변수의 경우에는 const 로 선언해 메모리 낭비를 방지할 수 있다.

'오늘 한 일을 기록하자 > TIL' 카테고리의 다른 글

201111_TIL  (0) 2020.11.11
201109_TIL  (0) 2020.11.09
201102_TIL  (0) 2020.11.02
201031_TIL  (0) 2020.10.31
201028_TIL  (0) 2020.10.28