ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Global 오브젝트와 Window 오브젝트
    JavaScript 2020. 10. 10. 17:22

    Global 오브젝트란 ?

    Global 오브젝트는 일반적으로 HTML 코드의 <script> 엘리먼트를 통해 하나만 존재하게 된다. (<script src = code.js>)  즉 HTML 파일에 <script> 엘리먼트의 src 속성에 JS 파일을 넣고 해당 JS 파일에 코드를 작성하게 된다. Global 오브젝트는 이때 script 엘리먼트를 통해 하나만 존재하게 됨 으로 scrip 엘리먼트 안에 작성 된 파일을 공유한다. (Global 오브젝트로 작성 된 코드는 모든 파일, 코드에서 공유한다.)

     

    Global 오브젝트의 특징

    • Global 이라는 객체 이름은 존재하지만 실체가 없다. 즉 일반적인 객체는 객체의 이름을 통해 접근하게 되지만 (String.length) Global 오브젝트는 바로 프로퍼티를 통해 접근하게 된다.
    • Global.isNaN() 처럼 객체의 이름을 통해 프로퍼티에 접근하는 구조가 아닌 isNaN() 과 같이 바로 프로퍼티를 통해 접근하게 되면 JS엔진은 이를 Global 오브젝트의 프로퍼티리고 인식하고 동작하게 된다.  
    • Global 오브젝트는 new 연산자를 사용 한 인스턴스의 생성이 불가능 하다. ( 모든 코드에서 접근이 가능함으로 인스턴스의 생성이 필요없음 )

    위와 같이 바로 Global 오브젝트의 프로퍼티 Key를 호출하게 되면 Global 오브젝트의 프로퍼티로 접근을 의미한다.

     

    window 오브젝트란 ?

    이전에 호스트 오브젝트에 대해서 다룰 때 window 오브젝트는 호스트 오브젝트라고 하였다. 즉 JS가 동작할 수 있는 플랫폼 (브라우저) 에서 기본적으로 제공하는 오브젝트 중 한가지가 window 오브젝트이며 해당 window 오브젝트는 JS 환경에서 동작 할 수 있게 제공된다.

    잠깐 Global 오브젝트에 대해서 다루어 보자 Global 오브젝트는 위에 설명한 바와 같이 실체가 없다 하였다.

     위와 같이 Global 오브젝트는 JS 스펙 내부에만 정의 되어있을 뿐이지 사용자가 접근할 수 없다. 그렇다면 어떻게 Global 오브젝트의 프로퍼티, 함수 (isNaN() , ... etc) 와 같은 요소들에 접근 할 수 있는지에 대한 의문이 생길것이다.

    위 의문에 대한 해답은 window 오브젝트에 있다. 호스트 오브젝트 중 하나인 window 오브젝트는 JS의 빌트인 Global 오브젝트의 요소 (프로퍼티, 함수)를 window 오브젝트의 프로퍼티로써 정의해두고 있다.

    따라서 Global 오브젝트의 함수, 프로퍼티를 객체의 이름을 통해 접근하기 위해서는 호스트 오브젝트인 window 오브젝트를 통해 접근하면 된다.  (아래 이미지 참조)

     

     

     

     

     

    'JavaScript' 카테고리의 다른 글

    Array 객체 매소드 정리 (ES5)  (0) 2020.10.14
    Array Property List (prototype)  (0) 2020.10.13
    빌트 인 Function 객체  (0) 2020.10.09
    Built-in Object (Object 자료형)  (0) 2020.10.08
    JavaScript 의 Object 종류와 JS의 플랫폼  (0) 2020.10.06

    댓글

Designed by Tistory.