ホームページ
本書をご支援ください:
購入
または
寄付
(広告です。ブロックしないでください。)
詳解JavaScript
目次
I まえがき
1 本書について
1.1 本書のホームページはどこですか?
1.2 本書の内容は?
1.3 購入で何が得られますか?
1.4 内容をプレビューするにはどうすればよいですか?
1.5 エラーを報告するにはどうすればよいですか?
1.6 読書のヒント
1.7 表記法と慣例
1.8 謝辞
II 型、値、変数
2 JavaScriptにおける型強制
2.1 型強制とは何か?
2.2 ECMAScript仕様で強制を実装するのに役立つ演算子
2.3 小休止:JavaScriptで仕様アルゴリズムを表現する
2.4 型強制アルゴリズムの例
2.5 型強制を行う演算子
2.6 用語集:型変換に関連する用語
3 デストラクチャリングアルゴリズム
3.1 パターンマッチングアルゴリズムの準備
3.2 パターンマッチングアルゴリズム
3.3 空オブジェクトパターンと配列パターン
3.4 アルゴリズムの適用
4 環境:変数の裏側
4.1 環境:変数を管理するためのデータ構造
4.2 環境による再帰
4.3 環境によるネストされたスコープ
4.4 クロージャと環境
5 グローバル変数の詳細
5.1 スコープ
5.2 字句環境
5.3 グローバルオブジェクト
5.4 ブラウザでは、
globalThis
はグローバルオブジェクトを直接指していません
5.5 グローバル環境
5.6 結論:JavaScriptが通常のグローバル変数とグローバルオブジェクトの両方を持つのはなぜですか?
5.7 さらなる読書と本章の情報源
III データの操作
6 オブジェクトと配列のコピー
6.1 シャローコピーとディープコピー
6.2 JavaScriptにおけるシャローコピー
6.3 JavaScriptにおけるディープコピー
6.4 さらなる読書
7 データを破壊的に更新する、破壊的に更新しない
7.1 例:オブジェクトを破壊的に更新する、破壊的に更新しない
7.2 例:配列を破壊的に更新する、破壊的に更新しない
7.3 手動によるディープアップデート
7.4 汎用的なディープアップデートの実装
8 共有可能なミュータブル状態の問題と回避策
8.1 共有可能なミュータブル状態とは何か、なぜ問題なのか?
8.2 データをコピーすることで共有を回避する
8.3 非破壊的に更新することでミューテーションを回避する
8.4 データを不変にすることでミューテーションを防ぐ
8.5 共有可能なミュータブル状態を回避するためのライブラリ
IV OOP:オブジェクトのプロパティ属性
9 プロパティ属性:はじめに
9.1 オブジェクトの構造
9.2 プロパティ記述子
9.3 プロパティの記述子の取得
9.4 記述子によるプロパティの定義
9.5
Object.create()
:記述子によるオブジェクトの作成
9.6
Object.getOwnPropertyDescriptors()
のユースケース
9.7 記述子プロパティの省略
9.8 ビルトインコンストラクトはどのプロパティ属性を使用しますか?
9.9 API:プロパティ記述子
9.10 さらなる読書
10 オブジェクトが変更されるのを防ぐ
10.1 保護レベル:拡張の防止、シール、フリーズ
10.2 オブジェクトの拡張を防止する
10.3 オブジェクトをシールする
10.4 オブジェクトをフリーズする
10.5 さらなる読書
11 プロパティ:代入と定義
11.1 代入と定義
11.2 理論上の代入と定義(オプション)
11.3 実践における定義と代入
11.4 どの言語構造が定義を使用し、どれが代入を使用しますか?
11.5 さらなる読書と本章の情報源
12 プロパティの列挙可能性
12.1 列挙可能性がプロパティを反復処理する構成にどのように影響するか
12.2 事前に定義されたプロパティと作成されたプロパティの列挙可能性
12.3 列挙可能性のユースケース
12.4 結論
V OOP:テクニック
13 クラスをインスタンス化するテクニック
13.1 問題:プロパティを非同期的に初期化する
13.2 解決策:Promiseベースのコンストラクタ
13.3 解決策:静的ファクトリメソッド
13.4 Promiseベースのコンストラクタのサブクラス化(オプション)
13.5 結論
13.6 さらなる読書
14 クラスのインスタンスのコピー:
.clone()
とコピーコンストラクタ
14.1
.clone()
メソッド
14.2 静的ファクトリメソッド
14.3 謝辞
15 コレクションのための不変ラッパー
15.1 オブジェクトのラップ
15.2 Mapのための不変ラッパー
15.3 配列のための不変ラッパー
VI 正規表現
16 正規表現:ルックアラウンドアサーションの例
16.1 チートシート:ルックアラウンドアサーション
16.2 本章の警告
16.3 例:一致の前後を指定する(肯定的ルックアラウンド)
16.4 例:一致の前後を指定しない(否定的ルックアラウンド)
16.5 インターリュード:ルックアラウンドアサーションを内側に向ける
16.6 例:
'abc'
で始まらない文字列に一致する
16.7 例:
'.mjs'
を含まない部分文字列に一致する
16.8 例:コメントを含む行をスキップする
16.9 例:スマートクォート
16.10 謝辞
16.11 さらなる読書
VII 雑多なトピック
17 Promiseの実装による探索
17.1 復習:Promiseの状態
17.2 バージョン1:スタンドアロンPromise
17.3 バージョン2:
.then()
呼び出しのチェーン
17.4 便宜メソッド
.catch()
17.5 反応の省略
17.6 実装
17.7 バージョン3:
.then()
コールバックから返されたPromiseのフラット化
17.8 バージョン4:反応コールバックでスローされた例外
17.9 バージョン5:コンストラクタパターンの公開
18 Proxyによるメタプログラミング
18.1 概要
18.2 プログラミングとメタプログラミング
18.3 Proxyの説明
18.4 Proxyのユースケース
18.5 Proxy APIの設計
18.6 FAQ:Proxy
18.7 参照:Proxy API
18.8 結論
18.9 さらなる読書
19 残りの章はどこにありますか?