728x90
원시값과 래퍼 객체에 대해 알아보자!
빌트인 객체
원시값과 래퍼객체
원시값
문자열, 숫자, 불리언 값 등등
원시값에 대해 객체처럼 마침표 표기법(대괄호 표기법)으로 접근하면 JS 엔진이 일시적으로 원시값을 연관된 객체로 변환
=> 원시값을 객체처럼 사용 시 연관된 객체를 생성해 생성된 객체로 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시값으로 되돌린다.
래퍼 객체
문자열, 숫자, 불리언 값에 대해 객체처럼 접근 시 생성되는 임시 객체
const str = "hi";
console.log(str.length); // 원시 타입인 문자열이 래퍼 객체인 String 인스턴스로 변환
console.log(str.toUpperCase());
console.log(typeof str); // 래퍼 객체로 프로퍼티에 접근하거나 메서드를 호출한 후, 다시 원시값으로 되돌린다.
- 문자열에 마침표 표기법으로 접근하면 래퍼 객체인 String 생성자 함수의 인스턴스가 생성되고 문자열은 래퍼 객체의 [[StringData]] 내부 슬롯에 할당
문자열 래퍼 객체인 String 생성자 함수의 인스턴스는 String.prototype의 메서드를 상속받아 사용 가능
- 래퍼 객체의 처리가 종료되면 래퍼 객체의 [[StringData]] 내부 슬롯에 할당된 원시값으로 원래의 상태 즉, 식별자가 원시값을 갖도록 되돌리고 래퍼 객체는 가비지 컬렉션의 대상이 된다.
- Symbol도 래퍼 객체를 생성
-> 일반적인 원시값과는 달리 리터럴 표기법으로 생성할 수 없고 Symbol 함수를 통해 생성해야 하므로 다른 원시값과는 차이가 있다. - String, Number, Boolean, Symbol은 생성되는 래퍼 객체에 의해 마치 객체처럼 사용할 수 있으며
표준 빌트인 객체인 String, Number, Boolean, Symbol의 프로토타입 메서드 또는 프로퍼티를 참조할 수 있다.
-> String, Number, Boolean 생성자 함수를 new 연산자와 함께 호출하여 문자열, 숫자, 불리언 인스턴스를 생성할 필요가 없으며 권장하지도 않는다. Symbol은 생성자 함수가 아니므로 제외 - null과 undefined는 래퍼 객체를 생성하지 않는다.
-> null undefined 값을 객체처럼 사용하면 에러 발생
본 게시글은 모던자바스크립트 Deep Dive - 자바스크립트의 기본 개념 책을 읽고 정리했습니다.
더 자세한 내용은 책을 구매해보시길 권장드립니다!
728x90
반응형
'TIL > JS' 카테고리의 다른 글
중요한 ES6 함수 (0) | 2023.03.03 |
---|---|
조금 쉬운 빌트인 객체 - 빌트인 전역 함수 (0) | 2023.02.23 |
아주 쉬운 빌트인 전역 프로퍼티 (0) | 2023.02.23 |
알아야 하는 전역 객체 (0) | 2023.02.23 |
조금 어려운 빌트인 객체 (0) | 2023.02.23 |
댓글