전역객체(Global Object)란 window 객체로 모든 객체가 소속된 객체이고, 창이나 프레임을 의미한다.
* 위 그림처럼 alert 와 window.alert의 결과는 같다. 이는 alert가 window 객체의 메소드이기 때문이다.
* 객체를 만든다는 것은 window 객체의 프로퍼티를 만드는 것과 같은 것 !
즉, 전역변수와 함수가 사실은 window 객체의 프로퍼티와 메소드라는 것이다.
* 이러한 특성을 ECMAScript에서는 Global 객체라고 부른다. 이 Global 객체는 호스트 환경에 따라서
이름이 다르고 하는 역할이 조금씩 다르다. 웹브라우저와 JavaScript에서 window객체는 전역객체이면서
동시에 웹브라우저의 창이나 프레임은 제어하는 역할을 하고 Node.js에서는 window가 아닌 global이 전역객체이다.
this
* this는 함수 내에서 함수 호출 맥락을 의미한다. 즉, 함수를 어떻게 호출하느냐에 따라 this가 가리키는 대상이 달라진다는 뜻이다.
1. 함수 호출
* [우측 그림] 함수 내에서 this는 전역객체 window와 같다. [좌측 그림] 객체 안의 메소드의 this는 그 객체를 가리킨다.
* 전역객체를 보면 알겠지만, [우측 그림]의 함수 func는 전역객체 window의 메소드이다.
그 때문에 func()안의 this는 객체인 window를 가리키고 있는 것이다.
2. 생성자 호출
* 함수 호출 시 this는 전역객체를 가리키고, 생성자는 빈 객체를 만들기 때문에 객체 내에서 만들어진 this는 만들어진 객체를 가리킨다.
* 생성자가 실행되기 전까지 객체는 변수에 할당될 수 없기 때문에 this가 아니면 객체에 대한 어떤 작업도 할 수 없다.