728x90
다음은 가장 많이 쓰는 네이티브들이다.
String()
Number()
Boolean()
Array()
Object()
Function()
RegExp()
Date()
Error()
Symbol()
네이티브는 사실 내장 함수이다. 자바스크립트의 String()
이 자바의 문자열 값을 생성하는 String()
생성자와 비슷하게 보여서 다음 코드처럼 쓸 수 있음을 눈치챌 수 있을 것이다.
var s = new String("Hello World");
console.log(s.toString()); // Hello World
네이티브는 생성자처럼 사용할 수 있지만 실제로 생성되는 결과물은 우리의 예상과 다를 수 있다.
var a = new String("abc");
typeof a; // object..? string 이 아니다
a instanceof String; // true
Object.prototype.toString.call(a); // "[Obejct String]"
new String("abc")
생성자의 결과는 원시값 "abc"
를 감싼 래퍼다. 놀랍게도 typeof
연산자로 이 객체의 타입을 확인해보면 자신이 감싼 원시 값의 타입이 아닌 object
의 하위 타입에 아깝다.
객체 래퍼가 어떻게 생겼는지 들여다 보자.
console.log(a);
이 코드의 실행 결과는 브라우저마다 다르다. 개발자 콘솔 창에 어떻게 객체를 직렬화 하여 보여주는 편이 좋을지는 브라우저 개발자가 임의로 결정했기 때문이다. 요지는 new String("abc")
은 "abc"
를 감싸는 문자열 래퍼를 새엇ㅇ하여 원시 값 "abc"
는 아니라는 점이다.
참고
- You Don't Know JS ( 한빛 미디어 )
728x90
'JAVASCRIPT' 카테고리의 다른 글
[JS][네이티브] 래퍼 박싱하기 (0) | 2022.01.27 |
---|---|
[JS][네이티브] 내부 [[Class]] (0) | 2022.01.27 |
[JS] this 란? (0) | 2022.01.26 |
[JS][값][마무리] 값 vs 레퍼런스 (0) | 2022.01.26 |
[JS][값] 특수 값 (0) | 2022.01.26 |
댓글