[모던 JavaScript] 5.1 원시값의 메서드
원시값
- 원시형 값
- 원시형의 종류는 string, number, bigint, boolean, symbol, null, undefined형으로 총 7가지임
객체
- 프로퍼티에 다양한 종류의 값을 저장할 수 있음
- 중괄호 {}를 사용해 만들 수 있음
- 함수도 객체의 일종임
- 원시값보다 무겁고, 내부 구조를 유지하기 위해 추가 자원을 사용해서 시스템 자원이 많이 소모된다는 단점이 있음
원시값을 객체처럼 사용하기
- 자바스크립트 창안자는 아래와 같은 방법을 사용해 해결책을 모색했음
1. 원시값은 원시값 그대로 남겨둬 단일 값 형태를 유지함
2. 문자열, 숫자, 불린, 심볼의 메서드와 프로퍼티에 접근할 수 있도록 언어 차원에서 허용함
3. 이를 가능하기 위해, 원시값이 메서드나 프로퍼티에 접근하려 하면 추가 기능을 제공해주는 특수한 객체, "원시 래퍼 객체"를 만들어 줌
4. 이 객체는 곧 삭제됨
- "래퍼 객체"는 원시 타입에 따라 종류가 다양함
- 각 래퍼 객체는 원시 자료형의 이름을 그대로 차용해, String, Number, Boolean, Symbol라고 부름
예시 1)
let str = "Hello";
alert( str.toUpperCase() ); // HELLO
1. 문자열 str은 원시값이므로 원시값의 프로퍼티에 접근하는 순간 특별한 객체가 만들어짐
2. 이 객체는 문자열의 값을 알고 있고, toUpperCase()와 같은 유용한 메서드를 가지고 있음
3. 메서드가 실행되고, 새로운 문자열이 반환됨
4. 특별한 객체는 파괴되고, 원시값 str만 남음
- 자바스크립트 엔진은 위 프로세스 최적화에 많은 신경을 쓰므로 원시 래퍼 객체를 만들지 않고도 원시 래퍼 객체를 생성한 것처럼 동작하게 해줌
예시 2)
- 숫자형도 고유한 메서드를 지원함
- 메서드 toFixed(n)를 이용하면 원하는 자리에서 소수점 아래 숫자를 반올림할 수 있음
let n = 1.23456;
alert( n.toFixed(2) ); // 1.23