원시값의 메서드

📄 원시값이란?

원시값은 객체가 아니면서 메서드도 가지지 않는 데이터를 뜻한다.

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

원시값에서도 객체에서처럼 메서드를 호출할 수 있다는 뜻이다.

📄 원시값을 객체처럼 사용하는 과정

let str = "Hello";

alert(str.toUpperCase()); // HELLO
  1. 문자열 str은 원시값이므로 프로퍼티 toUpperCase에 접근하는 순간 특별한 객체가 만들어진다.
  2. 메서드가 실행되고, 새로운 문자열이 반환된다.
  3. 특별한 객체는 파괴되고 원시값 str만 남는다.

📄 왜 이런 내부 프로세스가 생겨난 것일까?

자바스크립트는 다양한 고유한 프로퍼티와 메서드를 가지는 내장 객체를 제공한다.
하지만, 이런 기능을 사용하면 시스템 자원이 많이 소모된다.
객체는 원시값보다 무겁고, 내부 구조를 유지하기 위해 추가 자원을 사용하기 때문이다.
따라서 원시값에 메서드를 호출해 임시객체를 만들고 작업이 완료되면 임시객체를 파괴한다.

📄 주의할 점

원시값은 추가 데이터를 저장할 수 없다.

let str = "Hello";

str.test = 5;

alert(str.test);

엄격모드에서는 래퍼 객체를 수정하려 할 때 에러가 발생하고,
비 엄격 모드에서는 에러가 발생하진 않고 래퍼 객체에 프로퍼티 test가 추가되지만 래퍼 객체는 바로 삭제되기 때문에 마지막 줄이 실행될 땐 프로퍼티 test를 찾을 수 없다.

출처

Leave a comment