Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 문자열의 원시 값(Primitive Value)을 얻는 방법

JavaScript에는 undefined, null, boolean, string, number라는 5가지 원시 타입(primitive type)이 있습니다. 이 외의 모든 값은 객체(object)입니다.

원시 타입 중 boolean, string, number는 각각 Boolean, String, Number 생성자로 만들어진 래퍼 객체(wrapper object)로 감쌀 수 있습니다.

래퍼 객체에서 다시 원시 값을 꺼내려면 객체에 대해 valueOf() 메서드를 호출하면 됩니다.

예제 코드

console.log(typeof true);
console.log(typeof new Boolean(true));
console.log(typeof (new Boolean(true)).valueOf());

console.log(typeof "abc");
console.log(typeof new String("abc"));
console.log(typeof (new String("abc")).valueOf());

console.log(typeof 123);
console.log(typeof new Number(123));
console.log(typeof (new Number(123)).valueOf());

실행 결과

"boolean"
"object"
"boolean"

"string"
"object"
"string"

"number"
"object"
"number"

결과 분석

위 결과에서 볼 수 있듯이, 원시 값의 타입은 boolean, string, number로 표시되지만, 래퍼 객체의 타입은 object로 표시됩니다. 그리고 valueOf()를 사용해 값을 추출하는 순간, 다시 원시 값으로 되돌아오는 것을 확인할 수 있습니다.

원시 값도 프로퍼티를 가질 수 있는 이유

그런데 흥미롭게도 JavaScript에서는 원시 값 역시 프로퍼티를 가질 수 있습니다. 예를 들어 문자열 원시 값에서 length 프로퍼티에 접근할 수 있는데, 이것이 가능한 이유는 JavaScript가 필요에 따라 원시 값과 객체 사이에서 자동으로 형 변환(coercion)을 수행하기 때문입니다.

즉, 원시 값에 프로퍼티를 접근하는 순간 해당 값은 일시적으로 래퍼 객체로 감싸지고(wrapping), 프로퍼티에 접근한 후에는 다시 원시 값으로 되돌아갑니다(unwrapping). 이러한 내부 동작 덕분에 개발자는 원시 값과 객체를 구분하지 않고도 편리하게 문자열이나 숫자를 다룰 수 있습니다.