우가우가 원시 자료형이 method를 안 가져?

binary·2022년 5월 12일
2
post-thumbnail

codestates: Unit 10

🪨 원시 자료형

  • 원시 자료형은 객체가 아니면서 method를 가지지 않는 7가지 타입을 말한다.
  • 원시 자료형의 데이터 크기는 고정되어 있다.
  • 변수에 값이 할당된다.
  • stack 이라는 저장소를 사용한다.

원시 자료형의 또 다른 이름,,

  • 원시 타입
  • Primitive Type

✏️ 원시 자료형의 종류

  • number
  • undefined
  • boolean
  • string
  • bigint
  • symbol
  • null

🖨 원시 자료형을 복사하면 ❓

let a = 1;

let b = a;
console.log(b); // 1

b = 2;

console.log(a); // 1
console.log(b); // 2

let b = a; 변수 a의 값 (원시자료형)을 변수 b에 할당하여 복사했다!

그리고 b의 값을 2로 재할당해주었는데, a의 값은 바뀌지 않았다.

변수 a와 변수 b의 관계는 데이터 값만 복사된 관계이다. 그래서 변수 b에 다른 값을 재할당해도 변수 a의 값은 바뀌지 않는다.

📄 참조 자료형

  • 참조 자료형의 데이터 크기는 정해져 있지 않고 동적으로 크기가 변한다.
  • 변수에 직접 값이 할당이 되는 것이 아니라 값의 주소가 할당이 된다.
  • heap 이라는 저장소를 사용한다.

참조 자료형 또 다른 이름,,

  • 참조 타입
  • Reference Type

✏️ 참조 자료형의 종류

  • array
  • object
  • function

🖨 참조 자료형을 복사하면 ❓

let e = [10, 20];

let f = e;

console.log(e); // [10, 20]
console.log(f); // [10, 20]

f.push(30); 

console.log(e); // [10, 20, 30]
console.log(f); // [10, 20, 30]

let f = e; 변수 f의 값 (참조자료형)을 변수 e에 할당하여 복사했다!

그리고 변수 f의 배열에 30이라는 값을 추가해주었는데, 변수 e의 배열에도 30이 추가되었다.

변수 f와 변수 e의 관계는 주소가 복사된 관계이다. 같은 주소값을 공유하고 있기 때문에 한 곳에서 데이터에 변경이 생기면 다른 한 곳에서도 데이터 변경이 생긴다.


❓ 근데 원시 자료형이 method를 안 가진다고? split()은? toString()는?

공부하다가 궁금한 게 생겼다.
원시 자료형이 method 를 가지지 않는다니, 도대체 뭔 말이야?

의문 1

string, number 등 이런 원시 자료형을 다룰 수 있는 method 가 있지 않나?

의문 2

만약 slice() , substring() , split() 등과 같이 문자열을 다루는 methodtoFixed() 등과 같이 숫자를 다루는 method 들이 원시 자료형의 method 가 아니라면 도대체 누구의 method 인가?

해결

알아보니 원시값 자체에 method가 있는 게 아니라 원시값이 위 같은 메서드에 접근하는 순간! 특별한 객체가 만들어지고 접근 후에는 특별한 객체가 삭제된다고 한다.

원시 래퍼 객체 (object wrapper) ( String(), Number(), Boolean() 등… ) 라는 것이 원시 자료형들에게 메서드를 제공하고 있기 때문에 원시 자료형의 특징인 가벼움을 유지하면서 method를 사용할 수 있는 것이다.

참고한 글
👉 Javascript - 원시값(Primitive)의 메서드


혹시나 잘못된 정보가 있다면 댓글로 알려주세요 ! 저의 성장의 큰 도움이 될 것 같습니다.🌱

0개의 댓글