What does "window" have? - windowの中身を覗いてみる -

> この記事は、『Qiita "N/S高等学校" Advent Calendar 2023』18日目の記事です。

S高1期生、通学コース週5生の綾坂ことです。
今年もN/S高アドカレがあるとのことで、せっかくなので書こうかと。

---

私には、常日頃「JavaScriptであそぼ」をやっていて思うことがあります。
それは、**知らない機能が多すぎる**ということ。

MDN Web Docsを眺めてると、「なにそのAPI、知らなかった」となることがよくあります。
知らなかったから使えなかったは勿体ない、やはり存在だけでも知っておくべきかなと。

JavaScriptでそういう機能が全部一覧になってそうなところといえば、やはり`window`。
そんなわけで、`window`の中身を片っ端から調べていきます。

> 12月18日 追記
> 思った100倍地獄でしたたたたたｔ

## ログの生成

> `window`じゃなくて`globalThis`でやりましたが、`window === globalThis`は`true`だったのでたぶん問題ないと思います。

`Object.keys(globalThis).sort()`だとなんか足りてない気がしたので、Chromeのコンソールで`globalThis`って打ったときに出てくる詳細ログを頑張って整形してきました。
かなりの量(1000行以上)あるので[ScrapBox](https://scrapbox.io/AyaExpTech/What_does_"window"_have%3F_-_windowの中身を覗いてみる_-_(資料))に投げました、見たければ見てください

## 解説

- ログの上の方から順番に書いていきます
    - ただし、関連性のあるプロパティ同士をまとめて書くために順番を変えることはあります
- ログには組み込みのクラスとかも出ていますが省略します
    - まじでキリが無くなるので
    - 余裕あったら追記します
- 一部分からなかったやつもあります、許してください……

### 数字・記号

- window[0]
    - [window.frames](#f)を参照
- window.JSCompiler_renameProperty()
    - なんか上にでてきたので一応ここに書いておきます
    - これはなんですか？

### a

- [window.alert()](https://developer.mozilla.org/ja/docs/Web/API/Window/alert)
    - ダイアログを表示して待機
- [window.atob()](https://developer.mozilla.org/ja/docs/Web/API/atob)
    - 「Base64文字列 → 文字列」の変換を行うメソッド

### b

- [window.blur()](https://developer.mozilla.org/ja/docs/Web/API/Window/blur)
    - ウィンドウからフォーカスを外す
- [window.btoa()](https://developer.mozilla.org/ja/docs/Web/API/btoa)
    - 「文字列 → Bse64文字列」の変換を行うメソッド

### c

- [window.caches](https://developer.mozilla.org/ja/docs/Web/API/caches)
    - Service Worker APIの`CacheStorage`インターフェースへのアクセス
- [window.cancelAnimationFrame()](https://developer.mozilla.org/ja/docs/Web/API/Window/cancelAnimationFrame)
    - [window.requestAnimationFrame()](#r)で予約したアニメーションの実行をキャンセル
- [window.cancelIdleCallback()](https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelIdleCallback)
    - [window.requestIdleCallback()](#r)で予約したアニメーションの実行をキャンセル
- [window.captureEvents()](https://developer.mozilla.org/en-US/docs/Web/API/Window/captureEvents)
    - **非推奨**メソッド
    - 何もしない
    - 日本語版MDN Web Docsにはイベント全部キャプチャするみたいなこと書いてありますが、HTML Standardには何もするなと書いてあります
        - "The captureEvents() and releaseEvents() methods must do nothing."
- [window.chrome](https://bugs.chromium.org/p/chromium/issues/detail?id=768489)
    - **非標準**メソッド
    - おそらく、Chrome拡張機能用APIが誤って公開されている状態
- [window.clearInterval()](https://developer.mozilla.org/ja/docs/Web/API/clearInterval)
    - [window.setInterval()](#s)で設定したインターバルを削除
- [window.clearTimeout()](https://developer.mozilla.org/ja/docs/Web/API/clearTimeout)
    - [window.setTimeout()](#s)で設定したタイムアウトを削除
- [window.clientInformation](https://developer.mozilla.org/ja/docs/Web/API/Window#window.clientinformation)
    - [window.navigator](#n)の別名らしいです
- [window.close()](https://developer.mozilla.org/ja/docs/Web/API/Window/close)
    - 現在のウィンドウを閉じる
- [window.closed](https://developer.mozilla.org/ja/docs/Web/API/Window/closed)
    - 現在のウィンドウが閉じられているかどうか
- [window.confirm()](https://developer.mozilla.org/ja/docs/Web/API/Window/confirm)
    - OK・キャンセルボタンを持つalertみたいなやつを出す。返り値はBoolean
- [window.console](https://developer.mozilla.org/ja/docs/Web/API/Window/console)
    - おなじみのコンソール
- [window.cookieStore](https://developer.mozilla.org/ja/docs/Web/API/cookieStore)
    - [Cookie Store API](https://developer.mozilla.org/ja/docs/Web/API/Cookie_Store_API)へのアクセス
- [window.createImageBitmap()](https://developer.mozilla.org/ja/docs/Web/API/createImageBitmap)
    - ImageとかVideoとかCanvasとかから`ImageBitmap`を生成する
- [window.credentialless](https://developer.mozilla.org/en-US/docs/Web/API/Window/credentialless)
    - このWindowが資格情報のあるIframeかどうか、Boolean
- [window.crossOriginIsolated](https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated)
    - このWindowが[クロスオリジン分離状態](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements)にあるか、Boolean
    - ここがtrueなら、以下の機能が使えるらしい
        - `SharedArrayBuffer`の転送
        - 高精度な`performance.now()`
        - `performance.measureUserAgentSpecificMemory()`
- [window.crypto](https://developer.mozilla.org/ja/docs/Web/API/crypto)
    - [Web Cryptography API](https://developer.mozilla.org/ja/docs/Web/API/Web_Crypto_API)へのアクセス
- [window.customElements](https://developer.mozilla.org/ja/docs/Web/API/Window/customElements)
    - Web components `CustomElementRegistry`へのアクセス
    - カスタム要素を制作するために使う

### d

- [window.decodeURI()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/decodeURI)
    - [encodeURI()](#e)でURIエンコードした文字列をデコード
- [window.decodeURIComponent()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent)
    - [encodeURIComponent()](#e)でURIエンコードした文字列をデコード
- [window.devicePixelRatio](https://developer.mozilla.org/ja/docs/Web/API/Window/devicePixelRatio)
    - CSS上の`1px`が実際の画面では何pxで表示されてるか
- [window.document](https://developer.mozilla.org/ja/docs/Web/API/Window/document)
    - 文書全体への参照
- [window.documentPictureInPicture](https://developer.mozilla.org/en-US/docs/Web/API/Window/documentPictureInPicture)
    - Document Picture-in-Picture APIへのアクセス

### e

- [window.encodeURI()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/encodeURI)
    - URIエンコード
    - URLとして安全な文字列になるようにエンコードしてくれる
- [window.encodeURIComponent()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent)
    - URIエンコード
    - `&`もエンコードするため、ユーザー入力値のPOST時のエンコードなどで使える
- [window.escape()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/escape)
    - **非推奨**。エスケープシーケンスで置き換え
- [window.eval()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/eval)
    - **セキュリティ的に使うな**。文字列なJavaScriptコードを評価
- [window.event()](https://developer.mozilla.org/ja/docs/Web/API/Window/event)
    - 現在サイトのコードが処理している`Event`を返す
    - あんま使わないほうが良さそう
- [window.external](https://developer.mozilla.org/en-US/docs/Web/API/Window/external)
    - **非推奨**。中身はすべてダミー関数

### f

- [window.fetch()](https://developer.mozilla.org/ja/docs/Web/API/fetch)
    - Fetch APIによるネットワークリソースの取得
- [window.find()](https://developer.mozilla.org/ja/docs/Web/API/Window/find)
    - **非標準**。Window内の文字列を検索するらしい
- [window.focus()](https://developer.mozilla.org/ja/docs/Web/API/Window/focus)
    - このウィンドウを最前面に持ってくるように要求する
- [window.frameElement](https://developer.mozilla.org/ja/docs/Web/API/Window/frameElement)
    - iframeなどの場合、このWindowが埋め込まれているElementを返す
    - トップレベルのWindowの場合はnullになる
- [window.frames](https://developer.mozilla.org/ja/docs/Web/API/Window/frames)
    - Windowのサブフレームを配列風オブジェクトとして返す
    - `window === window.frames`は真(？！？！)
        - 実は`window`は配列風オブジェクトだった

### g

- [window.getComputedAccessibleNode()](https://wicg.github.io/aom/explainer.html)
    - [アクセシビリティオブジェクトモデル](https://wicg.github.io/aom/explainer.html)関連？
    - まじで分からなかったので誰か情報をください
- [window.getComputedStyle()](https://developer.mozilla.org/ja/docs/Web/API/Window/getComputedStyle)
    - CSS Object Model、指定した要素の(計算後の)スタイルを`CSSStyleDeclaration`で返す
- [window.getLockScreenData()](https://github.com/WICG/lock-screen)
    - [Lock Screen API](https://github.com/WICG/lock-screen)へのアクセス？
    - 過去検討されていたAPIの模様
- [window.getScreenDetails()](https://developer.mozilla.org/en-US/docs/Web/API/Window/getScreenDetails)
    - 端末が持つ画面についての情報にアクセスできる「Window Management API」への参照
    - マルチウィンドウアプリとかで役に立つかも
- [window.getSelection()](https://developer.mozilla.org/ja/docs/Web/API/Window/getSelection)
    - ユーザーが選択しているテキストの位置or範囲を`Selection`で返す
- [window.globalThis](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/globalThis)
    - どの環境でも"globalThis"って書いたら確実にグローバルオブジェクトが返ってくる
        - `window`, `self`, `frames`, `global`と、環境とスコープにより差がありすぎたから？
- 

### h

- [window.history](https://developer.mozilla.org/ja/docs/Web/API/WIndow/history)
    - History API、セッションのページ遷移履歴を持つ`History`を返す

### i

- [window.indexedDB](https://developer.mozilla.org/ja/docs/Web/API/indexedDB)
    - IndexedDB API、`indexedDB`への非同期アクセス
- [window.innerHeight](https://developer.mozilla.org/ja/docs/Web/API/Window/innerHeight)
    - ウィンドウの内部の高さをピクセル単位で返す。水平方向のスクロールバーの高さを含む
- [window.innerWidth](https://developer.mozilla.org/ja/docs/Web/API/Window/innerWidth)
    - ウィンドウの内部の幅をピクセル単位で返す。垂直方向のスクロールバーの幅を含む
- [window.isFinite()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/isFinite)
    - 引数が有限数か判定する
    - 暗黙の型変換あり(※`Number.isFinite()`は型変換なし)
- [window.isNaN()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/isNaN)
    - 引数がNaNか判定する
    - 暗黙の型変換あり(※`Number.isNaN()`は型変換なし)
- [window.isSecureContext](https://developer.mozilla.org/ja/docs/Web/API/isSecureContext)
    - このWindowが安全なコンテキスト上にあるかをBooleanで返す

### l

- [window.launchQueue](https://developer.mozilla.org/en-US/docs/Web/API/Window/launchQueue)
    - Launch Handler API、PWAとしての起動方法を指定する
- [window.length](https://developer.mozilla.org/ja/docs/Web/API/Window/length)
    - Windowに含まれるサブフレーム(iframeなど)の個数を返す
    - [window.frames](#f)も参照
- [window.localStorage](https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage)
    - Web Storage API、Cookieより直感的なサイト単位のデータ保存先を提供する
- [window.location](https://developer.mozilla.org/ja/docs/Web/API/Window/location)
    - 文書の現在位置(≒今開いているページ)についての`Location`を返す
- [window.locationbar](https://developer.mozilla.org/ja/docs/Web/API/Window/locationbar)
    - ロケーションバーが表示されているかに関する[`BarProp`](https://developer.mozilla.org/en-US/docs/Web/API/BarProp)を返す
    - BarProp.visibleがBooleanを返す。ポップアップならfalseになる模様
    - どうやら歴史的経緯で残ってる系のものらしい……？

### m

- [window.matchMedia()](https://developer.mozilla.org/ja/docs/Web/API/Window/matchMedia)
    - メディアクエリ文字列を解析して`MediaQueryList`を返す
- [window.menubar](https://developer.mozilla.org/ja/docs/Web/API/window/menubar)
    - メニューバーの表示状態を表す`BarProp`を返す
- [window.moveby()](https://developer.mozilla.org/ja/docs/Web/API/window/moveBy)
    - ウィンドウの位置を指定した量だけ移動
- [window.moveto()](https://developer.mozilla.org/ja/docs/Web/API/window/moveTo)
    - ウィンドウの位置を指定した座標に移動

### n

- [window.name](https://developer.mozilla.org/ja/docs/Web/API/)
    - ウィンドウ名を取得・設定
    - 何に使うんこれ
- [window.NaN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/NaN)
    - 非数(Not-A-Number)を表すNumber型の値
    - モダンブラウザであれば設定&書込不可になっているはず
- [window.navigation](https://developer.mozilla.org/en-US/docs/Web/API/Navigation)
    - 戻る・進むなどのナビゲーション操作を制御するNavigation APIへのアクセス
- [window.navigator](https://developer.mozilla.org/ja/docs/Web/API/window/Navigator)
    - ユーザーエージェントの状態などを表す`Navigator`

### o

- [window.offscreenBuffering](http://help.dottoro.com/ljwbrvow.php)
    - オフスクリーンバッファリング機能を有効にするか(Boolean)
- [window.on-](https://developer.mozilla.org/ja/docs/Web/API/Window/load_event)
    - イベントハンドラープロパティが大量にある
- [window.open()](https://developer.mozilla.org/ja/docs/Web/API/window/open)
    - 新しいウィンドウで指定したページ等を開く
- [window.openDatabase()](https://www.tohoho-web.com/html5/web_sql_db.html)
    - Web SQL Databaseへのアクセス
    - IndexedDBを使え、だそうです
- [window.opener](https://developer.mozilla.org/ja/docs/Web/API/window/opener)
    - 何がこのウィンドウを開いたか(`window.open()`を実行したのはどのウィンドウか)
    - > 言い換えれば、ウィンドウ A がウィンドウ B を開いた場合、 B.opener は A を返します。
- [window.origin](https://developer.mozilla.org/ja/docs/Web/API/window/origin)
    - グローバルスコープのオリジンを文字列で返す
- [window.originAgentCluster](https://developer.mozilla.org/en-US/docs/Web/API/Window/originAgentCluster)
    - オリジンキーのエージェントクラスターに属すかどうか
    - なにこれ
- [window.outerHeight](https://developer.mozilla.org/ja/docs/Web/API/Window/outerHeight)
    - ウィンドウ全体の高さ
    - ページ表示部分の高さを出したい場合は`innerHeight`
- [window.outerWidth](https://developer.mozilla.org/ja/docs/Web/API/Window/outerWidth)
    - ウィンドウ全体の幅
    - ページ表示部分の高さを出したい場合は`innerWidth`

### p

- window.pageXOffset
    - 互換性保持のためのエイリアス
    - [window.scrollX](#s)を参照
- window.pageYOffset
    - 互換性保持のためのエイリアス
    - [window.scrollY](#s)を参照
- [window.parent](https://developer.mozilla.org/ja/docs/Web/API/Window/parent)
    - 親ウィンドウへの参照
- [window.performance](https://developer.mozilla.org/ja/docs/Web/API/performance_property)
    - パフォーマンス関連情報へのアクセス
- [window.parseFloat()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)
    - 文字列の先頭から数値リテラルと解釈できる最大の場所までを取り出して数値に変換
    - 厳密に数値リテラル→数値をやるなら`Number.parseFloat`
- [window.parseInt()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseInt)
    - 文字列の先頭から数値リテラルと解釈できる最大の場所までを取り出し整数に変換
    - 必要に応じて何進数で見るかも指定できる
        - 動作複雑なのでリファレンスを見た方がいい
    - 厳密に数値リテラル→数値をやるなら`Number.parseInt`
- [window.personalbar](https://developer.mozilla.org/ja/docs/Web/API/Window/personalBar)
    - BarPropを返す
- [window.postMessage()](https://developer.mozilla.org/ja/docs/Web/API/Window/postMessage)
    - 安全なオリジン間通信を行うためのメソッド
- [window.print()](https://developer.mozilla.org/ja/docs/Web/API/Window/print)
    - 現在の文書を印刷するための印刷ダイアログを開く
- window.privateAttribution
    - 本当にこれは何
    - Chromeにしか実装されてなさそう
- [window.prompt()](https://developer.mozilla.org/ja/docs/Web/API/window/prompt)
    - テキスト入力欄付きダイアログを出して待機

### q

- [window.queryLocalFonts()](https://developer.mozilla.org/en-US/docs/Web/API/Window/queryLocalFonts)
    - ローカルで使用可能なフォントの一覧を返す(Promise)
- [window.queueMicrotask()](https://developer.mozilla.org/ja/docs/Web/API/queueMicrotask)
    - マイクロタスクキューに関数を入れる
    - > 現在のタスクが完了し実行コンテキストの制御がブラウザーのイベントループへ戻る前、他に保留中のコードがなくなった時点で走る

### r

- [window.releaseEvents()](https://developer.mozilla.org/ja/docs/Web/API/Window/releaseEvents)
    - **非推奨**。[captureEvents()](#c)を解除
- [window.reportError()](https://developer.mozilla.org/ja/docs/Web/API/reportError)
    - 捕捉されない例外をエミュレートして上に報告
    - エラーの"投げ直し"ができる？
- [window.requestAnimationFrame()](https://developer.mozilla.org/ja/docs/Web/API/Window/requestAnimationFrame)
    - 要素などのアニメーションを実行するために使う
        - 1フレームずつしか動かないので関数内でまたrewuestAnimationFrameを呼ばないといけない
- [window.requestIdleCallback()](https://developer.mozilla.org/ja/docs/Web/API/Window/requestIdleCallback)
    - アイドル状態になったときに実行させたい関数を設定
- [window.resizeBy()](https://developer.mozilla.org/ja/docs/Web/API/Window/resizeBy)
    - ウィンドウの幅と高さを指定した量広げる(相対)
- [window.resizeTo()](https://developer.mozilla.org/ja/docs/Web/API/Window/resizeTo)
    - ウィンドウの幅と高さを指定した量にする(絶対)

### s

- window.screenLeft
    - window.screenXのエイリアス(IE由来)
- window.screenTop
    - window.screenYのエイリアス(IE由来)
- [window.screenX](https://developer.mozilla.org/ja/docs/Web/API/Window/screenX)
    - ブラウザーのビューポートの左端から画面の左端までの距離(CSSのpx単位)
- [window.screenY](https://developer.mozilla.org/ja/docs/Web/API/Window/screenY)
    - ブラウザーのビューポートの上端から画面の上端までの距離(CSSのpx単位)
- [window.scroll()](https://developer.mozilla.org/ja/docs/Web/API/Window/scroll)
    - ページを任意位置までスクロールする(絶対移動)
- [window.scrollBy()](https://developer.mozilla.org/ja/docs/Web/API/Window/scrollBy)
    - ページを任意位置までスクロールする(相対移動)
- [window.scrollTo()](https://developer.mozilla.org/ja/docs/Web/API/Window/scrollTo)
    - ページを任意位置までスクロールする(絶対移動)
    - `scroll()`とほぼ同じ効果らしい
- [window.scrollX](https://developer.mozilla.org/ja/docs/Web/API/Window/scrollX)
    - X方向のスクロール量
- [window.scrollY](https://developer.mozilla.org/ja/docs/Web/API/Window/scrollY)
    - Y方向のスクロール量
- [window.scrollBars](https://developer.mozilla.org/ja/docs/Web/API/Window/scrollbars)
    - BarPropを返す
- [window.self](https://developer.mozilla.org/ja/docs/Web/API/Window/self)
    - 自分自身を返す
- [window.sessionStorage](https://developer.mozilla.org/ja/docs/Web/API/Window/SessionStorage)
    - Web Storage API、セッション終了のたびに消えるストレージにアクセス
- [window.setInterval()](https://developer.mozilla.org/ja/docs/Web/API/setInterval)
    - 指定時間ごとに関数を呼び出す
- [window.setTimeout()](https://developer.mozilla.org/ja/docs/Web/API/setTimeout)
    - 指定時間後に関数を呼び出す
- [window.showDirectoryPicker()](https://developer.mozilla.org/ja/docs/Web/API/Window/showDirectoryPicker)
    - File System Access
    - あまりにも"悪"すぎやしないかい、このAPI
- [window.showOpenFilePicker()](https://developer.mozilla.org/ja/docs/Web/API/Window/showOpenFilePicker)
    - File System Access
- [window.showSaveFilePicker()](https://developer.mozilla.org/ja/docs/Web/API/Window/showSaveFilePicker)
    - File System Access
- [window.speechSynthesis](https://developer.mozilla.org/ja/docs/Web/API/speechSynthesis)
    - Web Speech API、音声合成機能へのアクセス
- [window.status](https://developer.mozilla.org/ja/docs/Web/API/Window/status)
    - **非推奨**。ブラウザーウィンドウの最下部にあるステータスバーのテキストを設定するためのものだった
- [window.statusbar](https://developer.mozilla.org/ja/docs/Web/API/Window/statusbar)
    - BarPropを返す
- [window.stop()](https://developer.mozilla.org/ja/docs/Web/API/Window/stop)
    - ウィンドウの読み込みを停止
- [window.structuredClone()](https://developer.mozilla.org/ja/docs/Web/API/structuredClone)
    - オブジェクトのディープコピーを作成
    - JSON.stringify→JSON.parseをやらなくてもいい
- [window.styleMedia](https://webplatform.github.io/docs/css/media_queries/apis/StyleMedia/)
    - ドキュメントを表示するメディアスタイルに関する情報を取得

### t

- [window.toolbar](https://developer.mozilla.org/ja/docs/Web/API/Window/toolbar)
    - BarPropを返す
- [window.top](https://developer.mozilla.org/ja/docs/Web/API/Window/top)
    - ウィンドウ階層の最上位ウィンドウを返す
- [window.trustedTypes](https://developer.mozilla.org/ja/docs/Web/API/Window/trustedTypes)
    - Trusted Types API、信頼できる型の作成方法を生成する`TrustedTypePolicyFactory`へのアクセス

### u

- [window.undefined](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Undefined)
    - プリミティブ値`undefined`を返す
    - モダンブラウザであれば設定&書込不可になっているはず
- [window.unescape](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/unescape)
    - **非推奨**。[escape()](#e)でエンコードした文字列をデコード

### v

- [window.visualViewport](https://developer.mozilla.org/ja/docs/Web/API/Window/visualViewport)
    - 特定のウィンドウの視覚的ビューポートを表す`VisualViewport`を返す
    - [Visual Viewport API](https://developer.mozilla.org/en-US/docs/Web/API/Visual_Viewport_API)関連

### w

- [window.webkit-](https://developer.mozilla.org/ja/docs/Glossary/Vendor_Prefix#api_%E3%81%AE%E6%8E%A5%E9%A0%AD%E8%BE%9E)
    - ベンダー接頭辞
    - 試験的または非標準なAPIに対して接頭辞を追加することがある、Chromeの場合は`webkit`
- [window.window](https://developer.mozilla.org/ja/docs/Web/API/Window/window)
    - 自分自身を返す


---

## あとがき

結構知らないものも多かったなと思いました。
(`window.print()`とか地味に使ったことなかった。たしかに言われてみればありそうだけど)
やはり通読が最強