본문 바로가기
JAVASCRIPT

[JS][네이티브] 네이티브 개요

by KBS 2022. 1. 27.
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

댓글