티스토리 뷰

 

▶랩퍼(Wrapper) 객체

랩퍼 객체를 살펴보기 전에 간단한 예제 코드를 보겠습니다.

const arr = 'javascript';

console.log(str.length); // 10

str 변수는 문자열 원시 타입인데도 마치 객체처럼 length 프로퍼티에 접근합니다.

문자열은 객체가 아닌 원시 타입인데 어떻게 프로퍼티를 가질까요?

자바스크립트는 문자열의 프로퍼티에 접근할 때 내부적으로 문자열 값을 가지고 임시 객체로 변환합니다.

그리고 프로퍼티 접근이 종료되면 생성된 객체는 메모리에서 제거됩니다.

자바스크립트에서 이런 과정을 박싱(Boxing)이라고 부릅니다.

숫자와 불리언 타입 역시 프로퍼티에 접근할 때 동일한 과정을 실행합니다.

 

박싱 과정에서 생성되는 임시 객체를 랩퍼 객체라고 합니다.

랩퍼 객체는 문자열, 숫자, 불리언 타입만 존재하며, 각각에 대응하는 네이티브 생성자로 String(), Number(), Boolean()이 있습니다.

여기서 주의할 점은 랩퍼 객체는 원시 타입과는 다르게 객체라는 점입니다.

const str = new String('javascript');

console.log(typeof str); // object

하지만 자바스크립트 엔진 내부적으로 박싱 과정을 최적화하기 때문에 예제 코드처럼 굳이 랩퍼 객체를 생성해 사용할 일은 거의 없습니다.

 

1) 언박싱(Unboxing)

박싱이 있다면 언박싱도 있지 않을까요? 물론 언박싱도 있습니다.

언박싱은 박싱과는 반대로 랩퍼 객체를 원시 타입으로 반환합니다.

언박싱은 명시적으로 valueOf() 메서드를 호출해 수행할 수 있습니다.

const num = new Number(11);

console.log(num.valueOf()); // 11

하지만 언박싱은 valueOf() 메서드를 호출해 수행할 때보다는 값을 다른 타입으로 변경하는 타입 변환을 할 때 수행되는 경우가 많습니다.

 


여기까지 자바스크립트 랩퍼 객체에 대해 알아보았습니다.

728x90
LIST
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함