반응형
인프런 - 생활코딩 - JavaScript Immutability (inflearn.com)
자바스크립트 객체를 불변하게 만드는 방법에 대해 설명하는 강좌이다.
완전 자세하진 않고 immer와 같은 라이브러리 활용법은 설명해주지 않는다.
역시 생활코딩 답게 도식화를 통한 명확한 개념 설명은 훌륭하지만, 난 이 강의를 그냥 세 문장으로 요약하겠다.
- 불변성을 위해선 새로운 객체를 만들어라.
- 새로운 객체를 만들면 레퍼런스가 변경되어 상태 변화를 알리기 쉽다. (for 리액트)
- 내부 레퍼런스도 완전히 새로운 값으로 만들어 진다면, 레퍼런스 주소값 비교를 통해 비교 할 수 있으므로 내부값을 다비교하는 로직이 필요없다!
- 이는 객체지향 원리 : "모든 원시타입을 포장해라, 일급컬렉션을 사용하라"와 관련있다
이 뒤에 나오는 이야기는 객체를 복사해서 새로운 객체를 만들기 위함이다.
강의요약
1. 수정과 삭제에 의한 사고를 막기 위해 `불변함`의 필요성 증가
2. 원자 데이터 타입과 연관 정보 정돈을 위한 타입
3. 1을 9로 바꿀 순 없다 (1!==9) 오브젝트 안의 프로퍼티는 원자값을 참조하므로 참조를 변경 가능하다.
4. 데이터가 같은 오브젝트여도 주소 레퍼런스가 다르기 때문에 같지 않다.
5. o3=o1하면 주소 레퍼런스가 같아서 같은 객체가 나온다 o3===o1 (주소값으로 비교한다)
6. 객체의 불변성은 객체를 새로 만들어서 유지한다. 그런데 프로퍼티만 복붙되지 내부 객체 참조는 똑같이 주소로 옮긴다.
7. 함수 만들 때 함수의 목적을 고려해야함. 원본 수정이냐? 복사냐?
8. freeze로 객체 수정 막기]
- 프리즈도 마찬가지로 내부는 안얼린다. 내부는 또 따로 얼려줘야함.
반응형