자바스크립의 데이터타입에는 원시타입과 객체타입이 있다.
Q. 데이터타입이 필요한 이유?
변수를 저장하고 참조할 때의 메모리 공간을 결정하기 위해서 이다.
자바스크립트는 데이터타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다.
래퍼객체는 원시타입에 대응하는 객체이다.
원시타입을 감싸는 형태로 사용된다.
let str = 'hello';
console.log(str.length);
str의 프로퍼티에 접근 할 때 new string을 호출 한 것처럼 값을 객체 값으로 임시변환해주는 객체이며, 프로퍼티 참조가 끝나면 소멸된다.
이런 내부 프로세스를 통해 원시값을 가볍게 유지하면서 메서드를 호출할 수 있다.
자바스크립트 엔진은 프로세스의 최적화에 많은 신경을 쓴다.
원시 래퍼 객체를 만들지 않고도 마치 원시 래퍼 객체를 생성(명세에 언급됨)한 것처럼 동작하게끔 한다.
문자열이나 숫자와 같은 원시값을 다루어야 하는 작업이 많은데, 메서드를 사용하면 작업을 수월하게 할 수 있다.
그런데 원시값은 가능한 한 빠르고 가벼워야 한다.
자바스크립트 엔진은 원시값을 객체처럼 사용하고 가볍게 유지하기 위해 래퍼객체를 사용한다.