2020.01.20 불변 데이터 패턴&객체의 복사
불변 데이터 패턴은 앞서 말한것과 같이 데이터를 변하지 않게 하기 위함이고 그 방법에는 2가지 경우가 있다.
첫번째. 객체의 방어적 복사
Object.assign(target, source)
두번재. 불변객체화를 통한 객체의 변경 방지
Object.freeze()
오늘은 첫번째 부분만 다룰 예정이다.
일단 Object.assign()이 어떤 기능을 가지고 있는지를 예제를 통해서 살펴보는게 이해하기 쉬울것 같다.
첫번째 행에서 obj 객체가 생성되고
두번째 행에서는 Object.assign()을 이용하여 copy변수에 obj객체를 복사한다.
세번째 행에서는 복사가 완료된 copy변수를 출력해서 확인하고
네번째 행에서는 복사한 객체와 원래의 객체가 서로 다른 객체임을 확인할수있다.
즉, 같은 내용을 품고 있지만 주소가 다르다는 말이다.
굳이 사람으로 비유하자면 생긴건 똑같은데 부모가 다르다.
뭐 이런 느낌??
복사의 기능 말고 병합의 기능도 존재한다.
그림에 나온 예제를 보면 알수있듯이 Object.assign()을 이용하면 서로다른 객체를 합칠수도 있다.
이때 타겟의 역할은 제일 왼쪽에 있는 변수가 하게된다.
그래서 Object.assign(o1)이라고 하게되면 merge1의 모든 객체의 값들이 출력된다.
이렇게 복사와 병합의 기능을 가지고 있는데 복사는 어떤 경우에 사용할까?
바로 객체안의 값이 자주 변할때 원래 객체는 내버려두고 복사를 이용해서 새로운 객체를 만들고
새로 복사된 객체를 이용해서 값을 바꿔가는것이다.
병합의 경우에는 객체의 성격에 맞게 서로 잘 분류해 놓으면 보다 가독성이 높아지므로
객체의 성격이 맞지 않게 선언되어있다면 그것들을 재조정해서 가독성을 높일수도 있다고 생각한다.