래퍼 객체(Wrapper Object)란?

버건디·2022년 7월 11일
0

자바스크립트

목록 보기
3/31
post-thumbnail
  • 자바스크립트는 Object, String, Number, Boolean, Symbol... 등 40여개의 표준 빌트인 객체를 제공한다.

☝️ 여기서 표준 빌트인 객체란?

표준 빌트인 객체란 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다. 표준 빌트인 객체는 ECMAScript 사양에 정의된 객체이므로 자바스크립트 실행 환경 (브라우저 또는 Node.js 환경)과 관계없이 언제나 사용할 수 있다. 표준 빌트인 객체는 전역 객체의 프로퍼티로서 제공된다. 따라서 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있다.
!! ECMAScript란 자바스크립트를 표준화하기 위해 만들어진 프로그래밍 언어이다.

  • Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수 객체다.
  • 생성자 함수 객체인 표준 빌트인 객체는 프로토타입 메서드와 정적 메서드를 제공하고, 생성자 함수 객체가 아닌 표준 빌트인 객체는 정적 메서드만 제공한다.

☝️ 정적 메서드란 ?

  • 생성자 함수로 인스턴스 생성하지 않아도 사용할수 있는 메서드
const str = 'abcde';
str.lent = 5; //5
str.lent; //undefined

여기서 . 은 프로퍼티 참조 연산자로서, . 앞에는 객체를 가리키는 식별자가 나와야하고 . 뒤에는 프로퍼티가 나와야한다.

하지만 str은 객체가 아니라 원시 타입이다. 그런데도 객체처럼 동작한다. 그 이유는 무엇일까?

  • 그 이유는 원시값인 문자열, 숫자, 불리언 값의 경우 이들 원시값에 대해 마치 객체처럼 마침표 표기법(또는 대괄호 표기법) 으로 접근하면 자바스크립트 엔진이 일시적으로 원시값을 연관된 객체로 변환해 주기 때문이다.

  • 원시값을 객체처럼 사용하면, 자바스크립트는 임시적으로 연관된 객체를 생성해주고, 그 생성된 객체로 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시값으로 돌려준다. 그리고 사용이 끝난 객체는 가비지컬렉터의 대상이 된다.

  • new 연산자로 직접 생성자가 생성되는 것이 아닌, new String()를 호출한 것처럼 임시적으로 객체로 변환을 해준다.

  • 임시객체는 재사용이 불가능하므로, 사용이 끝나면 가비지컬렉터가 수거해간다.

이처럼 문자열, 숫자, 불리언, 심벌은 암묵적으로 생성되는 래퍼 객체에 의해 마치 객체처럼 사용할수 있으므로, new 연산자와 함께 호출하여 인스턴스를 생성할 필요가 없다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글