ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.