자 오늘 포스팅할 내용은 무엇이냐~
Javascript Immutability ! 불변성에 대한 내용이다 !
불변성이란, 데이터 원본이 훼손되는 것을 막는 작업을 뜻한다. Javascript를 이용하여 프로그래밍을 진행할 때, 수많은 참여자가 있을 수 있고, 수많은 코드들이 작성되기 마련이다.
이때, 어떠한 데이터를 정해놓고, 불변하게 하기 위한 작업이라고 생각하면 되겠다.
특히나, 데이터가 수정 및 삭제되었을 때 범죄가 될 수 있는 경우에 반드시 이 불변성을 걸어주야 되지 않겠는가?
먼저 데이터 타입에 대해서 살펴보자.
크게는 Primitive (원시 타입)과 Object (객체) 로 나눌 수 있다.
먼저 원시타입은 더 이상 작은 단위로 쪼개질 수 없는 데이터 이고, 객체는 연관된 데이터들을 정리정돈하는 역할을 하는 녀석이다.
그리하여,
위의 p1 과 p2를 선언하여 값을 Number 데이터 타입인 1로 값을 지정해 주면, 컴퓨터는 같은 메모리에 p1 과 p2 를 저장하게 된다. 두개를 비교하면, p1 === p2 는 true를 반환하게 된다.
반면, o1 과 o2 같이 객체로 값을 만들어주면, 컴퓨터는 객체의 가변성을 생각하여, 둘의 값이 완전히 같다고 하더라도 메모리를 따로 할당하게 된다. o1 === o2 는 false를 반환한다.
여기서 객체에 조금 더 집중해보자.
가장 아래 var o3 = o1 을 하게 되면, o3 또한 o1과 같은 메모리를 가르키게 되고, 같은 값을 가지게 되는데, 만약 여기서 제일 아랫줄에서 볼 수 있는 o3.name = 'lee'를 실행하게 되면 o1의 원본 값을 바꾸면서, 자기 값을 바꾸게 된다.
원본을 바꾸지 않으면서 자신의 값만 바꾸는 방법은 무엇일까?
바로 원본을 복사하여 새로운 메모리에 할당하는 방법인데, 명령어는 바로
var o3 = Object.assign({}, o1);
|
이다. 위 명령어를 이용하면, o1을 복사하고 새로운 메모리에 할당하게 되어, o3를 아무리 변경해도, 원본에는 영향을 미치지 않게 된다.
다음 포스팅은 Nested Object (중첩된 객체) 이다.
오늘은 여기까지 !
이 포스팅을 보시는 분 중 제가 틀린 부분, 잘못 이해한 부분이 있어 알려주실만한 내용이 있다면 언제든 편하게 댓글 남겨주세요 :) 감사합니다 !
댓글