Node.js를 공부하다가 보니 문득 헷갈렸습니다.
Javascript에서 모든 객체는 Object를 상속합니다. 그럼 window, global과 같은 전역객체도 Object 객체를 상속하는걸까요.
위의 이미지와 같이 Object와 EventTarget과 window객체가 프로토타입 체인상에 존재한다는 것을 확인할 수 있습니다.
그런데 document는 window에 속한 객체이니까 Node가 window일까요?
그렇지 않습니다.
그렇다고 Node를 상속하지도 않습니다.
그럼 window는 어디에 있고 Node는 뭘까요.
분명 이 사이에 window객체가 있을거 같은데요.
모던 자바스크립트 Deep Dive의 20장 '실행 컨텍스트'에서 정답을 찾을 수 있었습니다.
전역 객체는 전역 코드가 평가되기 이전에 생성됩니다.
이때 전역 객체에는 빌트인 전역 프로퍼티와 빌트인 전역 함수, 그리고 표준 빌트인 객체가 추가되며 동작환경에 따라 클라이언트 사이드 Web API 또는 특정 환경을 위한 호스트 객체를 포함합니다.
Node객체와 전역 객체는 상관이 없습니다. 단지 Object와 EventTarget의 프로토타입을 상속받는다는 것이 공통점일 뿐, Node는 DOM 조작을 위해 element를 객체화한 것이고 전역객체는 전역코드가 정의되기 전에 코드가 실행되기 위해 필요한 모든 준비를 갖추는 객체입니다.
'TIL(Today I Learned)' 카테고리의 다른 글
WebSocket (0) | 2024.07.30 |
---|---|
[git] rebase (0) | 2024.07.24 |
React에서 함수형 컴포넌트를 장려하는 이유 (0) | 2023.03.15 |
[예외 처리3]new Error() vs new Promise.reject() (0) | 2023.03.11 |
[예외발생2]Error() vs new Error() (0) | 2023.03.11 |