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 |
댓글