on your mark

[JAVASCRIPT.INFO] 5.1 원시값의 메서드 본문

WEB/Javascript

[JAVASCRIPT.INFO] 5.1 원시값의 메서드

dev-olive 2022. 12. 31. 23:22

5.1 원시값의 메서드

자바스크립트는 원시값을 마치 객체처럼 다룰 수 있게 한다.

원시값을 객체처럼 사용하기

  • 문자열이나 숫자와 같은 원시값을 다루어야 하는 작업이 많은데, 메서드를 사용하면 작업을 수월하게 할 수 있음
  • 원시값은 가능한 한 빠르고 가벼워야 함

이를 해결하기 위해 다음과 같은 해결책을 모색함

  1. 원시값은 원시값 그대로 남겨둬 단일 값 형태 유지
  2. 문자열, 숫자, 불린, 심볼의 메서드와 프로퍼티에 접근할 수 있도록 언어 차원에서 허용
  3. 원시값이 메서드나 프로퍼티에 접근하려 하면 추가 기능을 제공해주는 특수한 객체, "원시 래퍼 객체(object wrapper)"를 만들어 주고 이 객체는 삭제됨

"래퍼 객체"는 원시 타입에 따라 종류가 다양함

let str = "Hello";
alert(str.toUpperCase()); // HELLO

str.toUpperCase()가 호출될 떄 내부에서 실제로 일어나는 일

  1. 문자열 str은 원시값이므로 원시값의 프로퍼티 (toUpperCase)에 접근하는 순간 특별한 객체가 생성. 이 객체는 문자열의 값을 알고 있고, toUpperCase()와 같은 유용한 메서드를 가지고 있음
  2. 메서드가 실행되고, 새로운 문자열이 반환됨(alert창에 이 문자열이 출력됨)
  3. 특별한 객체는 삭제되고 원시값 str만 남음

이러한 프로세스를 통해 원시값을 가볍게 유지하면서 메서드를 호출할 수 있음

null/undefined는 메서드가 없다

특수 자료형인 nullundefined의 원시값 (null/undefined)은 위의 법칙을 따르지 않는다. 이 자료형과 연관되는 "래퍼 객체"도 없고, 메서드도 제공하지 않는다.

alert(null.test); // error