let str = 'coding';
console.log(str.length); // 6
console.log(str.charAt(0)); // 'c'
위의 코드에서처럼 문자열은 프로퍼티와 메소드를 가지고 있다.
하지만 문자열은 객체가 아니다.
그 이유는 문자열은 기본(원시) 데이터 타입이지만 문자열과 관련된 어떤 작업을 하려고 할 때
자바스크립트는 내부적으로 / 임시로 문자열 객체를 만들고 사용이 끝나면 바로 제거하기 때문이다.
let str = 'coding';
str.prop = 'everybody';
console.log(str.prop); // undefined
str.prop을 하는 순간 자바스크립트는 내부적으로 String객체를 만든다.
prop프로퍼티는 이 객체에 저장되지만 이 객체는 곧 제거된다.
그렇기 때문에 prop이라는 속성이 저장된 객체는 존재하지 않게 되는 것이다.
이렇게 임시로 생성된 객체를 래퍼 객체라고 한다.
원시 데이터 타입 별 래퍼객체