본문 바로가기
JAVASCRIPT

[JS][네이티브] 내부 [[Class]]

by KBS 2022. 1. 27.
728x90

내부 [[Class]]

typeof가 'object'인 값(배열 등)에는 [[Class]]라는 내부 프로퍼티(전통적인 클래스 지향 개념에서의 클래스라기보단 내부 분류법의 일부라고 보자)가 추가로 붙는다. 이 프로퍼티는 직접 접근할 수 없고 Object.prototype.toString()이라는 메서드에 값을 넣어 호출함 으로써 존재를 엿볼 수 있다. 예를 들면,

 

Object.prototype.toString.call([1, 2, 3]);
// [object Array]

Object.prototype.toString.call(/regex-literal/i);
// [object RegExp]

 

내부 [[class]] 값이, 배열은 Array, 정규식은 RegExp임을 알 수 있다. 대부분 내부 [[Class]]는 해당 값과 관련된 내장 네이티브 생성자를 가리키지만, 그렇지 않을 때도 있다.

 

원시 값에도 내부 [[class]]가 있을까? 먼저 null, undefined를 보자.

 

Object.prototype.toString.call(null);
// [object Null]

Object.prototype.toString.call(undefined);
// [object Undefined]

 

주지하다시피 Null(), Undefined() 같은 네이티브 생ㅅ어자는 없지만 내부 [[class]]값을 확인해보니 "Null", "Undefined"이다.

하지만 그 밖의 문자열 숫자 불리언 같은 단순 원시 값은 이른바 박싱과정을 거친다.

 


참고

  • You Don't Know JS ( 한빛 미디어 )
728x90

'JAVASCRIPT' 카테고리의 다른 글

[JS] 프로토타입(prototype)  (0) 2022.02.03
[JS][네이티브] 래퍼 박싱하기  (0) 2022.01.27
[JS][네이티브] 네이티브 개요  (0) 2022.01.27
[JS] this 란?  (0) 2022.01.26
[JS][값][마무리] 값 vs 레퍼런스  (0) 2022.01.26

댓글