객체가 무거운 이유
js는 날짜, 오류, html 요소 등을 다룰 수 있게 해주는 다양한 내장 객체(built-in Object)
를 제공
이 객체들은 고유한 프로퍼티와 메서드를 가짐
단점
- 이런 기능을 사용하면 시스템 자원이 많이 소모됨
- 그래서 객체는 원시값보다 무겁다
JavaScript 만든 사람이 한 생각
- 문자열, 숫자같은 원시값을 다룰 일이 많은데 메서드 사용하면 편할 것 같다
- 원시값은 가능한 빠르고 가벼워야 해
그래서 나온 해결책
- 원시값은 그대로 단일 값 형태를 유지
- 원시값이 메서드와 프로퍼티에 접근할 수 있게 언어 차원에서 허용
- 이를 가능하게 하려고 특수한 객체를 만듬
바로 원시 래퍼 객체(object wrapper)
이 객체는 곧 삭제됨(메서드, 프로퍼티 능력 쓰고 사라짐)
래퍼 객체는 원시 타입에 따라 종류도 제공하는 메서드도 다름
- String
- Number
- Boolean
- Symbol
동작 과정
let str = "hello";
console.log(str.toUpperCase( ));
- 문자열
str
은 toUpperCase
에 접근하는 순간 특별한 객체가 만들어짐.
그래서 toUpperCase()와 같은 메서드
사용가능
- 메서드 실행 후, 콘솔에 새로운 문자열 반환
- 특별한 객체는 파괴되고 원시값 str만 남음
📍주의) null, undefined
출처
https://ko.javascript.info/primitives-methods