Language/JavaScript

[모던 JavaScript] 5.1 원시값의 메서드

뚜sh뚜sh 2023. 1. 31. 18:52

원시값

- 원시형 값

- 원시형의 종류는 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