기초부터 완성까지, 프런트엔드를 읽고 정리한 내용입니다.
자바스크립트는 문자열
, 숫자
, 불리언
타입에 접근할 때 내부적으로 해당 값을 가지고 임시 객체로 변환한다. 그리고 프로퍼티 접근이 종료되면 객체는 메모리에서 제거된다.
이러한 과정을 박싱이라고 하며 이 과정을 통해서 원시 타입도 객체처럼 프로퍼티에 접근할 수 있다.
const str = 'javasciprt'
console.log(str.length)
박싱 과정에서 생성되는 임시 객체를 랩퍼 객체라고 한다. 문자열, 숫자, 불리언 타입만 존재하며 각각에 대응하는 네이티브 생성자로 String()
, Number()
, Boolean()
이 있다.
랩퍼 객체는 원시 타입과 다르게 객체이다.
const str = new String();
consle.log(typeof str); //object
자바스크립트 내부적으로 박싱 과정을 최적화 하기 때문에 굳이 래퍼 객체를 사용하지는 않는다.
랩퍼 객체를 원시 타입으로 변환한다. 명시적으로 valueOf()
메서드를 호출해 수행할 수 있다.
const num = new Number(11)
console.log(num.valueOf()); //11