[스터디] 원시 값과 객체의 비교

김하은·2023년 11월 30일
0

스터디

목록 보기
10/23

1. 주제

  • 책 내용 정리
  • 콜스택과 메모리힙의 데이터 저장 구조
  • 원시 타입에서 메소드 호출

2. 원시 값 vs. 객체

원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다.

1) 변경 가능 여부

  • 원시값: 변경 불가능한 값
  • 객체 타입의 값: 변경 가능한 값

2) 변수에 저장 되는 값

  • 원시값: 실제 값
  • 객체 타입의 값: 참조 값

3) 복사

  • 원시값: 원시 값이 복사되어 전달됨
  • 객체 타입의 값: 참조 값이 복사되어 전달됨

3. 콜스택과 메모리힙의 데이터 저장 구조

  • 컴퓨터의 모든 프로그램이 실행되기 위해선 우선 프로그램이 메모리 공간에 이동 되어야 함
  • 프로그램에서 사용되는 변수들을 저장할 메모리도 필요한데, 운영체제는 프로그램을 실행하기 위해 다양한 메모리 공간을 확보하고 있음
  • 원시 값과 객체 타입의 값은 서로 다른 메모리 공간에 저장됨
  • 원시 값은 콜 스택에 저장이 되고 객체 타입의 값은 메모리 힙에 저장 됨

4. 원시 타입에서 메소드 호출

  • 아래 코드를 보면 원시 타입도 메소드를 사용할 수 있음
  • 원시 타입에어 호출하는 메서드는 표준 빌트인 객체에 정의된 메소드임
let thisIsPrimitive = 'hello world'; // 원시타입을 할당
console.log(thisIsPrimitive.toUpperCase()); //HELLO WORLD
  • 표준 빌트인 객체
  • ECMAScript 사양에 정의된 객체를 말하며 전역 객체의 프로퍼티로서 제공되기 때문에 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있음
  • Number, String, Boolean, Symbol 등을 예로 들 수 있음

래퍼 객체

  • 자바스크립트 엔진은 원시값을 객체처럼 사용하면 암묵적으로 연관된 객체를 생성함
  • 객체를 생성한 후 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시값으로 되돌림
  • 문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체를 래퍼 객체라고 함

래퍼 객체가 필요한 이유

  • 객체는 다양한 프로퍼티와 메소드가 있어서 유용하지만 무겁고 느리다는 단점이 있음
  • 원시 타입은 가볍고 빠르지만 객체의 기능을 사용할 수는 없음
  • 두 단점을 모두 보완해서 원시 타입을 그대로 쓰고 메서드를 호출할 때만 객체로 바꾸자!

    원시 타입의 가벼움은 유지하면서 객체의 유용한 기능도 쓰기 위한 방법이다.

참고 자료

profile
아이디어와 구현을 좋아합니다!

0개의 댓글

관련 채용 정보