원시값은 객체가 아닌데 어떻게 메서드 씀?

song·2023년 12월 13일
0

js 정보

목록 보기
25/30

객체가 무거운 이유

js는 날짜, 오류, html 요소 등을 다룰 수 있게 해주는 다양한 내장 객체(built-in Object)를 제공
이 객체들은 고유한 프로퍼티와 메서드를 가짐

단점

  • 이런 기능을 사용하면 시스템 자원이 많이 소모됨
  • 그래서 객체는 원시값보다 무겁다


JavaScript 만든 사람이 한 생각

  1. 문자열, 숫자같은 원시값을 다룰 일이 많은데 메서드 사용하면 편할 것 같다
  2. 원시값은 가능한 빠르고 가벼워야 해


그래서 나온 해결책

  • 원시값은 그대로 단일 값 형태를 유지
  • 원시값이 메서드와 프로퍼티에 접근할 수 있게 언어 차원에서 허용
  • 이를 가능하게 하려고 특수한 객체를 만듬
    바로 원시 래퍼 객체(object wrapper)
    이 객체는 곧 삭제됨(메서드, 프로퍼티 능력 쓰고 사라짐)


래퍼 객체는 원시 타입에 따라 종류도 제공하는 메서드도 다름

  • String
  • Number
  • Boolean
  • Symbol


동작 과정

// ex)
let str = "hello";
console.log(str.toUpperCase( )); // HELLO
  1. 문자열 strtoUpperCase에 접근하는 순간 특별한 객체가 만들어짐.
    그래서 toUpperCase()와 같은 메서드 사용가능
  2. 메서드 실행 후, 콘솔에 새로운 문자열 반환
  3. 특별한 객체는 파괴되고 원시값 str만 남음


📍주의) null, undefined

  • 래퍼 객체 없음
  • 메서드도 제공 안함


출처

https://ko.javascript.info/primitives-methods

profile
인간은 적응의 동물

0개의 댓글

관련 채용 정보