개발 공부/javascript
[Primitive Data Types] #2. Wrapper Object (래퍼 객체)
짹뚜
2021. 12. 15. 14:21
해당 글은 모든 자바스크립트 개발자가 알아야 하는 33가지 개념에서 두 번째인 Primitive Data Types 항목을 공부하면서 간단하게 작성한 글이다.
let str = "hello";
console.log(str.length); // 5
위에 코드에서 str은 string 타입으로 생성이 되어있고 Primitive Data Type이기 때문에 메서드나 프로퍼티를 가질 수 없다. 그러나 다음 줄을 보면 객체처럼 메서드를 호출했는데도 오류가 발생하지 않은 것을 확인할 수가 있는데, 이것이 가능한 이유는 Wrapper Object 때문이다.
Wrapper Object(래퍼 객체)
래퍼 객체란 말 그대로 Primitive Data Type을 감싸는 객체를 얘기한다. Primitive Data Type 중에 래퍼 객체가 존재하는 것은 number, string, boolean, symbol이 있다. 그래서 해당 타입들은 메서드나 프로퍼티에 접근을 할 때 내부적으로 new 키워드를 사용해서 해당 타입의 객체가 임시로 만들어진다. (위의 코드를 예를 들어서 str.length가 실행되면 new String(str).length 가 실행된 것처럼 된다.)
이렇게 Primitive Data Type이 자동으로 래퍼 객체로 변환하는 것을 Auto-boxing이라고도 한다.
래퍼 객체는 메서드나 프로퍼티에 접근을 할 때만 임시적으로 생성이 되고 그 뒤에 바로 삭제된다.
let str = "hello";
str.id = 1; // 에러가 발생하지는 않음
console.log(str.id); // undefined;