[10] [[大域オブジェクト]]の [DFN[[CODE[self]]]] は、[[大域オブジェクト]]を表します。
[[文書環境]]では、同じく [DFN[[CODE[window]]]] も[[大域オブジェクト]]である
[CODE(DOMi)@en[Window]] を表します。

;; [11] [CODE[self]] を使うと、[[文書環境]]でも[[ワーカー環境]]でも[[大域オブジェクト]]にアクセスできます。

* 仕様書

[REFS[
- [8] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-31 07:16:44 +09:00]] 版) <https://html.spec.whatwg.org/#dom-window>
]REFS]

* 意味

[15] これら[[大域オブジェクト]]を返す[[IDL属性]]を介して[[大域オブジェクト]]を得ることで、
[[大域オブジェクト]]の様々なメンバーにアクセスできます。

[14] [CODE(JS)@en[this]] が設定される場面以外では [CODE(JS)@en[this]]
が[[大域オブジェクト]]を表しますし、それ以外でも名前が衝突しなければ[[大域オブジェクト]]のメンバー名によって[[大域オブジェクト]]メンバーにアクセスできますが、
[[大域オブジェクト]]に自身を返す[[IDL属性]]があることで、
より容易に確実に[[大域オブジェクト]]のメンバーにアクセスすることができるようになっています。

* 取得器

[7] [CODE(DOMi)@en[Window]] [[オブジェクト]]の
[CODE(DOMa)@en[window][window.window]] [[IDL属性]]、
[CODE(DOMa)@en[self][window.self]] [[IDL属性]]、
[CODE(DOMa)@en[frames][window.frames]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>8]]。

[FIG(steps)[
= [9] 
[[文脈オブジェクト]]の[F[関連Realm]]の
[F(ss)[GlobalEnv]]
の
[F[EnvironmentRecord]]
の
[F(ss)[GlobalThisValue]]
を返します。
]FIG]

;; [17] [CODE[Window]] それ自体を返すことに相当しますが、
[CODE[Window]] と [CODE[WindowProxy]]
の違いや、
[[閲覧文脈]]の有無の関係で、複雑になっています。

* 設定器

[12] [CODE(DOMi)@en[window]] は、[CODE(IDL xattr)@en[Unforgeable]] です [SRC[>>8]]。

[13] [CODE(DOMi)@en[self]], [CODE(DOMi)@en[frames]] は、
[CODE(IDL xattr)@en[Replaceable]] です [SRC[>>8]]。

* 歴史

** 誕生

[3] [[JavaScript 1.0]] で
[CODE(JS)@en[window.window]],
[CODE(JS)@en[window.self]],
[CODE(JS)@en[window.frames]] が実装されました。

** 標準化

[4] [[Web Applications 1.0]] でようやく標準化されました。

[6] [CITE@en-US[Window Object 1.0]]
( ([TIME[2006-04-08 02:19:28 +09:00]] 版))
<http://www.w3.org/TR/Window/#window>

[5] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-08-30 09:29:48 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=3693&to=3694>

[1] [CITE[Accessible global object 'self']]
([TIME[2015-08-04 07:08:14 +09:00]] 版)
<http://littledan.github.io/global.html>

[2] [CITE[IRC logs: freenode / #whatwg / 20150803]]
([TIME[2015-08-04 13:43:08 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150803#l-659>

[16] [CITE@en[Make window.window/frames/self deal with no browsing context]]
([[annevk]]著, [TIME[2019-10-16 16:36:52 +09:00]])
<https://github.com/whatwg/html/commit/89b7e23daf024fa391077c8587e5a4f1fb064a97>

[18] [CITE@en[GitHub - tc39/proposal-global: ECMAScript Proposal, specs, and reference implementation for `global`]]
([TIME[2020-07-13 11:48:09 +09:00]])
<https://github.com/tc39/proposal-global>

[19] [CITE@en[global breaks flickr.com · Issue #20 · tc39/proposal-global · GitHub]]
([TIME[2020-07-13 11:48:43 +09:00]])
<https://github.com/tc39/proposal-global/issues/20>

[20] [CITE@en[Normative: add `globalThis` by ljharb · Pull Request #702 · tc39/ecma262 · GitHub]]
([TIME[2020-07-13 11:49:00 +09:00]])
<https://github.com/tc39/ecma262/pull/702>

[22] 
ただの [[NIH]] で草

[21] [CITE@en[Clarify Window object's close(), closed, et al · Issue #4363 · whatwg/html · GitHub]]
([TIME[2020-07-13 11:49:44 +09:00]])
<https://github.com/whatwg/html/issues/4363>

[23] [CITE[Accessible global object 'self']]
([TIME[2015-08-07 04:07:53 +09:00]])
<http://littledan.github.io/global.html>