JavaScript 객체와 불변성이란 ?

최예닮·2022년 9월 23일
0

자바스크립트 객체 :

답변: 
1)객체 타입은 변경 가능한 값, 새로운 값을 다시 만들 필요없이 직접 변경이 가능하다.
  (let 변수는 어떠한 값을 가리키다가 다시 다른 값의 주소를 가리켜 재 할당 가능)
2)불변성은 원시 타입이다. 메모리영역 안에서 변경이 불가능하고 변수에 할당할 때 완전히 
 새로운 값이 만들어져 재 할당된다. 
 (const는 재선언 및 재할당 불가능)
 (다만 const는 값에 대한'참조'가 한번 변수에 할당되고 나변 변할 수 없는것이고 
  const 변수가 참조하고 있는 '값'이 불변한건 아니다)

1) 기본형 데이터와 참조형 데이터

답변:
기본형 타입 : (1)숫자, (2)문자열, (3)불리언, (4)null, (5)undefined, (6)심볼

  • 할당이나 연산시 데이터가 복제

참조형 타입 : (1)객체, (2)배열, (3)함수, (4)날짜, (5)정규표현식, (6)Map, (7)WeakMap, (8)Set, (9)WeakSet

  • 데이터가 참조된다

2) 불변 객체를 만드는 방법

답변:

const test = {
    'name' : 'dam'
};

Object.freeze(test);
이렇게 const의 재할당불가 + Object.freeze()의 객체속성 변경불가로 만들면 된다.

3) 얕은 복사와 깊은 복사

1) 얕은 복사

  • 객체를 복사할 때, 해당 객체만 복사하여 새 객체를 생성
  • 복사된 객체의 인스턴스 변수는 원본 객체의 인스턴스 변수와 같은 메모리 주소를 참조
  • 해당 메모리 주소의 값이 변경되면 원본 객체 및 복사 객체의 인스턴스 변수 값은 같이 변경된다.

2) 깊은 복사

  • 객체를 복사 할 때, 해당 객체와 인스턴스 변수까지 복사하는 방식.
  • 전부를 복사하여 새 주소에 담기 때문에 참조를 공유하지 않는다.

결론적으로는 객체의 주소값을 복사하는지, 아니면 객체의 실제 값(value)를 복사하는지의 차이이다.

profile
산을 오르려고 하는데 이제 주차장에 막 주차한 초보개발자

0개의 댓글