Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Window.window

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

요약

window 객체의 window 프로퍼티는 자기 자신의 window 객체를 가리킨다. 즉, 아래의 표현들은 같은 window 객체를 반환하게 된다:

window.window
window.window.window
window.window.window.window
  ...

웹페이지에서 window 객체는 전역 객체이기도 하다. 다시 말해서:

  1. 스크립트의 전역 변수는 사실 window 객체의 프로퍼티이다.
    var global = {data: 0};
    alert(global === window.global); // true를 반환한다.
    
  2. window 객체의 내장된 프로퍼티들은 window. 접두사 없이도 참조가 가능하다.
    setTimeout("alert('Hi!')", 50); // window.setTimeout. 을 사용한 것과 동일하다.
    alert(window === window.window); // true를 반환한다.
    

자기 자신을 참조하는 window 라는 프로퍼티가 있다는 것은 (아마도) 전역 객체를 쉽게 참조하기 위함으로 생각된다.(없다면 스크립트 첫 부분에 다음과 같이 직접 만들어주었어야 했다. var window = this;)

다른 이유로는, 만약 이 프로퍼티가 없다면 다음과 같이 작성이 불가능하기 때문이다: "window.open('https://google.com/')" - 대신 다음과 같이 적어야 할 것이다. "open('https://google.com/')"

Yet another reason to use this property is for libraries which wish to offer OOP-versions and non-OOP versions (especially JavaScript modules). If, for example, we refer to "this.window.location.href", a JavaScript module could define a property called "window" inside of a class it defined (since no global "window" variable exists for it by default) which, could be created, for example, after passing in a window object to the module class' constructor.  Thus, "this.window" inside of its functions would refer to that window object. In the non-namespaced version, "this.window" would simply refer back to "window", and also be able to get the document location without trouble. Another advantage is that the objects of such a class (even if the class were defined outside of a module) could change their reference to the window at will, as they would not be able to do if they had hard-coded a reference to "window" (yet the default in the class could still be set as the current window object).

Specification

문서 태그 및 공헌자

 이 페이지의 공헌자: pi1992
 최종 변경: pi1992,