-
Built in object 의 생성 (인스턴스)JavaScript 2020. 10. 5. 13:51
자바스크립트에서 Bulit in object 가 어떻게 생성되는지 알아본다.
위의 자료는 변수 value에는 "123" 이라는 문자열을 할당한 것 이다. 살펴보면 value 라는 key에 문자열 123이 값으로 지정 된 것을 볼 수 있다. 아래의 values는 new 연산자를 사용하여 String 오브젝트의 인스턴스를 생성하여 프리미티브 값으로 문자열 123을 할당 한 것이다. [[PrimitiveValue]] : '123' 이와 같이 할당 된 것을 볼 수 있다.
이제 할당한 각 문자열의 길이를 구하기 위해 String Object 의 length 매서드를 호출하였다. 여기서 한 가지 의문이 존재한다. 분명 values 는 new 연산자를 통해 String 객체의 인스턴스를 생성하여 프리미티브 값에 문자열 123을 할당 하였지만 value 는 "123" 이라는 값만 담겨져 있는 상태인데 어떻게 String 객체의 length 매서드를 사용하는 것 인가 ?
위의 의문에 대한 답은 간단하다. value = "123" 은 자바스크립트 내부적으로 value = new String ("123") 과 동일하게 동작한다. 즉 자바스크립트 엔진이 알아서 String 객체의 인스턴스를 생성하고 해당 인스턴스의 프리미티브 값을 유저가 할당한 값으로 할당하여 준다.
+ 개념
자바스크립트에서 "[[PrimitiveValue]]" 와 같이 대괄호 두개는 자바스크립트 내부적으로 사용하는 자료라는 의미이다. 따라서 사용자는 value.PrimitiveValue 다음과 같이 접근할 수 없으며 프리미티브 값에 접근하기 위해선 valueOf 라는 매서드를 통해 접근해야 한다. 또한 length 와 같이 대괄호 두개가 없는 것은 사용자가 접근할 수 있는 자료이다.
문자열 "123" 과 같은 자료는 위에서 설명한 것과 같이 String 객체의 인스턴스로 생성이 되며 각 인덱스 번호가 Key가 되며 해당 인덱스 번호에 위치한 값이 Value 가 된다.
EX )
0 : '1'
1 : '2'
2 : '3'
정리
이제 위의 내용을 통해 변수에 123, "123" 과 같은 정수, 문자를 집어 넣는다 해도 JS 내부적으로는 사용자가 입력한 자료를 추론하여 추론한 자료형에 알맞는 객체에 프리미티브 값으로 사용자가 입력한 값을 넣는다는 것을 알 수 있다. 또한 이렇게 생성 된 객체 즉 사용자가 설정한 특정한 값(프리미티브 값)을 가진 변수를 객체의 인스턴스라고 한다.
'JavaScript' 카테고리의 다른 글
JavaScript 의 Object 종류와 JS의 플랫폼 (0) 2020.10.06 함수 호출구조 (0) 2020.10.05 Built-in object 란 ? (인스턴스) (0) 2020.09.23 Built-in 이란 ? (1) 2020.08.17 Object Type (0) 2020.08.17