O'REILLY JavaScript

David Flanagan(デイビッド・フラナガン)氏の著書

オライリー・ジャパン O’REILLY JavaScript 第6版

についてまとめました。

かなりボリュームがありますが、jsをさわるなら、これは読んでおいて損はないかなと思いました。

1章 JavaScriptの概要

1.1 コアJavaScript言語

1.2 クライアントサイドJavaScript

第1部 コアJavaScript

2章 字句構造

2.1 文字コード
2.1.1 大文字と小文字
2.1.2 空白スペース、改行、制御文字
2.1.3 Unicodeエスケープシーケンス
2.1.4 正規化
2.2 コメント
2.3 リテラル
2.4 識別子と予約語
2.4.1 予約語
2.5 省略可能なセミコロン

3章 型、値、変数

3.1 数値
3.1.1 整数リテラル
3.1.2 浮動小数点リテラル
3.1.3 JavaScriptでの算術演算子
3.1.4 2進浮動小数点と丸め誤差
3.1.5 日付と時刻
3.2 テキスト
3.2.1 文字列リテラル
3.2.2 文字列リテラルのエスケープシーケンス
3.2.3 文字列の操作
3.2.4 パターンマッチング
3.3 論理値
3.4 nullとundefined
3.5 グローバルオブジェクト
3.6 ラッパーオブジェクト
3.7 不変な基本型値と可変なオブジェクト参照
3.8 型の変換
3.9 変数の宣言
3.9.1 宣言の繰り返しと省略
3.10 変数のスコープ
3.10.1 関数のスコープとホイスティング(巻き上げ)
3.10.2 プロパティとしての変数
3.10.3 スコープチェーン

4章 式と演算子

4.1 単項式
4.2 オブジェクトと配列の初期化
4.3 関数定義式
4.4 プロパティアクセス式
4.5 呼び出し式
4.6 オブジェクト生成式
4.7 演算子の概要
4.7.1 オペランドの数
4.7.2 オペランドと演算結果の型
4.7.3 左辺値
4.7.4 演算子の副作用
4.7.5 演算子の優先順位
4.7.6 演算子の結合性
4.7.7 評価順序
4.8 算術演算子
4.8.1 +演算子
4.8.2 単項算術演算子
4.8.3 ビット演算子
4.9 関係演算子
4.9.1 等値演算子と不等演算子
4.9.2 比較演算子
4.9.3 in演算子
4.9.4 instanceof演算子
4.10 論理演算子
4.10.1 論理積演算子 &&
4.10.2 論理和演算子 ||
4.10.3 論理否定演算子 !
4.11 代入演算子
4.11.1 算術演算を伴う代入演算子
4.12 評価式
4.12.1 eval()
4.12.2 グローバルeval()
4.12.3 strictモードでのeval()
4.13 そのほかの演算子
4.13.1 条件演算子 ?:
4.13.2 typeof演算子
4.13.3 delete演算子
4.13.4 void演算子
4.13.5 カンマ演算子

5章 文

5.1 式文
5.2 複合分と空文
5.3 宣言文
5.3.1 var文
5.3.2 function文
5.4 条件文
5.4.1 if文
5.4.2 else if文
5.4.3 switch文
5.5 ループ文
5.5.1 while文
5.5.2 do/while文
5.5.3 for文
5.5.4 for/in文
5.5.4.1 プロパティの列挙順序
5.6 ジャンプ文
5.6.1 ラベル文
5.6.2 break文
5.6.3 continue文
5.6.4 return文
5.6.5 throw文
5.6.6 try/catch/finally文
5.7 そのほかの文
5.7.1 with文
5.7.2 debugger文
5.7.3 "user strict"文
5.8 JavaScript文のまとめ

6章 オブジェクト

6.1 オブジェクトの生成
6.1.1 オブジェクトリテラル
6.1.2 newを使ったオブジェクトの生成
6.1.3 プロトタイプ
6.1.4 Object.create()
6.2 プロパティの読み出しと書き込み
6.2.1 連想配列としてのオブジェクト
6.2.2 継承
6.2.3 プロパティアクセスのエラー
6.3 プロパティの削除
6.4 プロパティのテスト
6.5 オブジェクトプロパティの調査
6.6 プロパティのゲッターメソッドとセッターメソッド
6.7 プロパティ属性
6.7.1 ゲッターメソッドとセッターメソッドのためのレガシーAPI
6.8 オブジェクト属性
6.8.1 プロトタイプ属性
6.8.2 クラス属性
6.8.3 拡張可属性
6.9 オブジェクトのシリアライズ
6.10 オブジェクトのメソッド
6.10.1 toString()メソッド
6.10.2 toLocaleString()メソッド
6.10.3 toJSON()メソッド
6.10.4 valueOf()メソッド

7章 配列

7.1 配列の生成
7.2 配列の要素の読み書き
7.3 疎な配列
7.4 配列の長さ
7.5 配列の要素の追加と削除
7.6 配列の要素の巡回
7.7 多次元配列
7.8 配列のメソッド
7.8.1 join()メソッド
7.8.2 reverse()メソッド
7.8.3 sort()メソッド
7.8.4 concat()メソッド
7.8.5 slice()メソッド
7.8.6 splice()メソッド
7.8.7 push()、pop()メソッド
7.8.8 unshift()、shift()メソッド
7.8.9 toString()、toLocalString()メソッド
7.9 ECMAScript5の配列メソッド
7.9.1 forEach()メソッド
7.9.2 map()メソッド
7.9.3 fillter()メソッド
7.9.4 every()、some()メソッド
7.9.5 reduce()、reduceRight()メソッド
7.9.6 indexOf()、lastIndexOf()メソッド
7.10 配列の種類
7.11 配列のようなオブジェクト

8章 関数

8.1 関数の定義
8.1.1 入れ子型の関数
8.2 関数の呼び出し
8.2.1 関数呼び出し
8.2.2 メソッド呼び出し
8.2.3 コンストラクタ呼び出し
8.2.4 間接的な呼び出し
8.3 関数の引数と仮引数
8.3.1 省略可能な引数
8.3.2 可変長の引数リスト(Argumentsオブジェクト)
8.3.2.1 calleeプロパティとcallerプロパティ
8.3.3 引数としてオブジェクトのプロパティを利用
8.3.4 変数の型
8.4 値としての関数
8.4.1 自分専用の関数プロパティの定義
8.5 名前空間としての関数
8.6 クロージャ
8.7 関数のプロパティとメソッドのコンストラクタ
8.7.1 lengthプロパティ
8.7.2 prototypeプロパティ
8.7.3 call()メソッドと、apply()メソッド
8.7.4 bind()メソッド
8.7.5 toString()メソッド
8.7.6 Function()コンストラクタ
8.7.7 呼び出し可能なオブジェクト
8.8 関数型プログラミング
8.8.1 関数による配列の処理
8.8.2 高階層化
8.8.3 関数の部分適用
8.8.4 メモ化

9章 クラスとモジュール

9.1 クラスとプロトタイプ
9.2 クラスとコンストラクタ
9.2.1 コンストラクタとクラスの同一性
9.2.2 constructorプロパティ
9.3 JavaScriptでのJavaスタイルのクラス
9.4 クラスの拡張
9.5 クラスと型
9.5.1 instanceof演算子
9.5.2 constructorプロパティ
9.5.3 コンストラクタ名
9.5.4 ダックタイピング
9.6 JavaScriptでのオブジェクト指向的な技術
9.6.1 例:Setクラス
9.6.2 例:列挙型
9.6.3 標準的な型変換メソッド
9.6.4 比較用のメソッド
9.6.5 メソッドの借用
9.6.6 プライベートな状態
9.6.7 コンストラクタオーバーロードとファクトリメソッド
9.7 サブクラス
9.7.1 サブクラスの定義
9.7.2 コンストラクタチェーンとメソッドチェーン
9.7.3 合成とサブクラス
9.7.4 クラス階層と抽象クラス
9.8 ECMAScript5のクラス
9.8.1 プロパティを列挙不可にする
9.8.2 不変クラスの定義
9.8.3 オブジェクト状態のカプセル化
9.8.4 クラス拡張の抑止
9.8.5 サブクラスとECMAScript5
9.8.6 プロパティディスクリプタ
9.9 モジュール
9.9.1 名前空間としてのオブジェクト
9.9.2 プライベートな名前空間としての関数スコープ

10章 正規表現パターンマッチング

10.1 正規表現の定義
10.1.1 リテラル文字
10.1.2 文字クラス
10.1.3 繰り返し
10.1.3.1 非貪欲な繰り返し
10.1.4 選択、グループ化、参照
10.1.5 一致位置の指定
10.1.6 フラグ
10.2 パターンマッチング用の文字列メソッド
10.3 RegExpオブジェクト
10.3.1 RegExpプロパティ
10.3.2 RegExpメソッド

11章 JavaScriptのサブセットと拡張

11.1 JavaScriptのサブセット
11.1.1 よいパーツ
11.1.2 セキュリティのためのサブセット
11.2 定義とスコープ付きの変数
11.3 分割代入
11.4 反復機構
11.4.1 for eachループ
11.4.2 イテレータ
11.4.3 ジェネレータ
11.4.4 配列内包
11.4.5 ジェネレータ式
11.5 簡易表記関数
11.6 複数のcatch節
11.7 E4X:ECMAScript for XML

12章 サーバーサイドJavaScript

12.1 Rhino上でのJavaをスクリプトする
12.1.1 Rhinoの例
12.2 Nodeによる非同期I/O
12.2.1 Nodeの例:HTTPサーバ
12.2.2 Nodeの例:HTTPクライアントユーティリティモジュール

第2部 クライアントサイドJavaScript

13章 Webブラウザに組み込まれたJavaScript

13.1 クライアントサイドJavaScript
13.1.1 Webドキュメント中でのJavaScript
13.1.2 Webアプリケーション中でのJavaScript
13.2 HTMLドキュメントへのJavaScriptコードの埋め込み
13.2.1 script 要素
13.2.2 外部ファイルのスクリプト
13.2.3 スクリプトの種類
13.2.4 HTML中のイベントハンドラ
13.2.5 URLへのJavaScriptの記述
13.2.5.1 ブックマークレット
13.3 JavaScriptプログラムの実行方法
13.3.1 同期と非同期と遅延スクリプト
13.3.2 イベントドリブンJavaScript
13.3.3 クライアントサイドJavaScriptのスレッドモデル
13.3.4 クライアントサイドJavaScriptのタイムライン
13.4 互換性と相互運用性
13.4.1 互換ライブラリ
13.4.2 グレードブラウザサポート
13.4.3 機能テスト
13.4.4 ファークスモードと標準モード
13.4.5 ブラウザテスト
13.4.6 Internet Explorerの条件付きコメント
13.5 アクセサビリティ
13.6 セキュリティ
13.6.1 JavaScriptではできないこと
13.6.2 同一出身ポリシー
13.6.2.1 同一出身ポリシーの緩和
13.6.3 プラグインやActiveXコントロールの制御
13.6.4 クロスサイトスクリプティング
13.6.5 Dos攻撃
13.7 クライアントサイドフレームワーク

14章 Windowsオブジェクト

14.1 タイマー
14.2 ブラウザ上のLocationオブジェクトと移動
14.2.1 URLの解析
14.2.2 新しいドキュメントのロード
14.3 閲覧の履歴
14.4 ブラウザと画面情報
14.4.1 Navigatorオブジェクト
14.4.2 Screenオブジェクト
14.5 ダイアログボックス
14.6 エラー情報
14.7 Windowプロパティとしてのドキュメント要素
14.8 複数のウィンドウとフレーム
14.8.1 ウィンドウのオープンとクローズ
14.8.1.1 ウィンドウのクローズ
14.8.2 フレーム間の関係
14.8.3 相互作用するウィンドウでのJavaScriptの使用

15章 ドキュメントの制御

15.1 DOMの概要
15.2 ドキュメント要素の選択
15.2.1 IDによる要素の選択
15.2.2 名前による要素の選択
15.2.3 型による要素の選択
15.2.4 CSSクラスによる要素の選択
15.2.5 CSSセレクタによる要素の選択
15.2.6 document.all[]
15.3 ドキュメント構造の探索
15.3.1 ノードのツリー構造としてのドキュメント
15.3.2 Elementのツリー構造としてのドキュメント
15.4 属性
15.4.1 プロパティとしてのHTML属性
15.4.2 非HTML属性の取得と設定
15.4.3 データセット属性
15.4.4 Attrノードとしての属性
15.5 要素のコンテンツ
15.5.1 HTMLとしての要素のコンテンツ
15.5.2 プレーンテキストとしての要素のコンテンツ
15.5.3 Textノードとしての要素コンテンツ
15.6 ノードの作成、挿入、削除
15.6.1 ノードの作成
15.6.2 ノードの挿入
15.6.3 ノードの削除と置換
15.6.4 DocumentFragmentの使い方
15.7 例:目次の作成
15.8 ドキュメントと要素位置とスクロール
15.8.1 ドキュメント座標とビューポート座標
15.8.2 要素のジオメトリの取得
15.8.3 位置から要素を取得
15.8.4 スクロール
15.8.5 要素の大きさ、位置、オーバーフローの詳細
15.9 HTMLフォーム
15.9.1 フォームとフォーム要素の選択
15.9.2 フォームと要素のプロパティ
15.9.3 フォームとフォーム要素のイベントハンドラ
15.9.4 プッシュボタン
15.9.5 トグルボタン
15.9.6 テキストフィールド
15.9.7 Select要素とOption要素
15.10 ドキュメントのそのほかの機能
15.10.1 ドキュメントのプロパティ
15.10.2 document.write()メソッド
15.10.3 選択されたテキストの読み出し
15.10.4 編集可能なコンテンツ

16章 CSSの制御

16.1 CSSの概要
16.1.1 カスケード
16.1.2 CSSの歴史
16.1.3 ショートカットプロパティ
16.1.4 非標準のプロパティ
16.1.5 CSSの使用例
16.2 重要なCSSプロパティ
16.2.1 CSSによる要素の位置指定
16.2.1.1 3次元座標:z-index
16.2.1.2 CSSによる位置指定の例:影付きテキスト
16.2.2 ボーダー、マージン、パディング
16.2.3 CSSボックスモデルと位置指定の詳細
16.2.3.1 ボーダーボックスモデルとbox-sizingプロパティ
16.2.4 要素の表示方法と可視性
16.2.5 色と透明度
16.2.6 部分表示:overflowとclip
16.2.7 例:半透明のウィンドウを重ね合わせる
16.3 インラインスタイルの制御
16.3.1 CSSアニメーション
16.4 算出スタイルの取得
16.5 CSSクラスの制御
16.6 スタイルシートの制御
16.6.1 スタイルシートの有効化と無効化
16.6.2 スタイルシートルールの取得、挿入、削除
16.6.3 新しいスタイルシートの作成

17章 イベント処理

17.1 イベントタイプ
17.1.1 レガシーイベントタイプ
17.1.1.1 フォームイベント
17.1.1.2 Windowsイベント
17.1.1.3 マウスイベント
17.1.1.4 キーイベント
17.1.2 DOMイベント
17.1.3 HTML5イベント
17.1.4 タッチスクリーンイベントとモバイルイベント
17.2 イベントハンドラの登録
17.2.1 イベントハンドラプロパティの設定
17.2.2 イベントハンドラ属性の設定
17.2.3 addEventListener()
17.2.4 attachEvent()
17.3 イベントハンドラ呼び出し
17.3.1 イベントハンドラの引数
17.3.2 イベントハンドラのコンテキスト
17.3.3 イベントハンドラのスコープ
17.3.4 イベントハンドラの戻り値
17.3.5 呼び出し順序
17.3.6 イベント伝播
17.3.7 イベントのキャンセル
17.4 ドキュメントのloadイベント
17.5 マウスイベント
17.6 マウスホイールイベント
17.7 ドラッグ&ドロップイベント
17.8 テキストイベント
17.9 キーボードイベント

18章 HTTPの制御

18.1 XMLHttpRequestの利用方法
18.1.1 リクエストの指定
18.1.2 レスポンスの読み出し
18.1.2.1 同期レスポンス
18.1.2.2 レスポンスの解釈
18.1.3 リクエストボディのエンコード
18.1.3.1 フォームエンコードされたリクエスト
18.1.3.2 JSONエンコードされたリクエスト
18.1.3.3 XMLエンコードリクエスト
18.1.3.4 ファイルのアップロード
18.1.3.5 multipart/form-dataリクエスト
18.1.4 HTTPプログレスイベント
18.1.4.1 アップロードプログレスイベント
18.1.5 リクエストの中止とタイムアウト
18.1.6 クロスオリジンなHTTPリクエスト
18.2 <script>によるHTTP制御:JSONP
18.3 Sever-Sent Eventsを使ったComet

19章 jQueryライブラリ

19.1 jQueryの基本
19.1.1 jQuery()関数
19.1.2 問い合わせと問い合わせ結果
19.2 jQueryのゲッターとセッター
19.2.1 HTML属性の取得と設定
19.2.2 CSS属性の取得と設定
19.2.3 CSSクラスの取得と設定
19.2.4 HTMLフォーム値の取得と設定
19.2.5 要素のコンテンツの取得と設定
19.2.6 要素の位置/サイズの取得と設定
19.2.7 要素のデータ取得と設定
19.3 ドキュメント構造の変更
19.3.1 要素の挿入と置換
19.3.2 要素のコピー
19.3.3 要素のラップ
19.3.4 要素の削除
19.4 jQueryでのイベント処理
19.4.1 単純形式のイベントハンドラ登録
19.4.2 jQueryのイベントハンドラ
19.4.3 jQuery Eventオブジェクト
19.4.4 高度なイベントハンドラ登録
19.4.5 イベントハンドラの登録解除
19.4.6 イベントのトリガー
19.4.7 カスタムイベント
19.4.8 ライブイベント
19.5 アニメーション効果
19.5.1 単純なアニメーション効果
19.5.2 カスタムアニメーション
19.5.2.2 アニメーションオプションオブジェクト
19.5.3 アニメーション効果の中止、遅延、キューイング
19.6 jQueryによるAjax
19.6.1 load()メソッド
19.6.2 Ajaxユーティリティ関数
19.6.2.1 jQuery.getScript()
19.6.2.2 jQuery.getJSON()
19.6.2.3 jQuery.get()、jQuery.post()
19.6.3 jQuery.Ajax()関数
19.6.3.1 よく使われるオプション
19.6.3.2 コールバック
19.6.3.3 あまり使われないオプションとフック
19.6.4 Ajaxイベント
19.7 ユーティリティ関数
19.8 jQueryセレクタと選択メソッド
19.8.1 jQueryセレクタ
19.8.1.1 単体セレクタ
19.8.1.2 セレクタ結合子
19.8.1.3 セレクタグループ
19.8.2 選択メソッド
19.8.2.1 コンテキストとしての選択の利用
19.8.2.2 直前の選択の復元
19.9 プラグインによるjQueryの拡張
19.10 jQuery UIライブラリ

20章 クライアントサイドストレージ

20.1 localStorageとsessionStrage
20.1.1 Storageの有効期間とスコープ
20.1.2 Storage API
20.1.3 Storageイベント
20.2 クッキー
20.2.1 クッキー属性:有効期間とスコープ
20.2.2 クッキーの登録
20.2.3 クッキーの読み出し
20.2.4 クッキーの制限事項
20.2.5 クッキーによるStorage
20.3 IEのuserData 永続化機構
20.4 アプリケーションストレージとオフラインWebアプリケーション
20.4.1 アプリケーションキャッシュマニュフェスト
20.4.1.1 複雑なマニュフェスト
20.4.2 キャッシュの更新
20.4.3 オフラインWebアプリケーション

21章 メディアとグラフィックの制御

21.1 スクリプトによる画像の判断
21.1.1 控えめな画像ロールオーバー
21.2 オーディオとビデオのスクリプト制御
12.2.1 タイプ選択と読み込み
12.2.2 メディアの再生と制御
12.2.3 メディア状態の問い合わせ
12.2.4 メディアイベント
21.3 SVG(Scalable Vector Graphics)
21.4 <canvas>中のグラフィック
21.4.1 線の描画とポリゴンの塗りつぶし
21.4.2 グラフィック属性
21.4.3 キャンバスの大きさと座標
21.4.4 座標系変換
21.4.4.1 座標系変換の数学的解釈
21.4.4.2 座標変換の例
21.4.5 曲線の描画と塗りつぶし
21.4.6 矩形
21.4.7 色、透明度、グラデーション、パターン
21.4.8 線描画属性
21.4.9 テキスト
21.4.10 クリッピング
21.4.11 影
21.4.12 画像
21.4.13 合成
21.4.14 ピクセル操作
21.4.15 衝突判定
21.4.16 キャンバスの例:スパークライン

22章 HTML5 API

22.1 GeoLocation
22.2 履歴管理
22.3 クロスオリジンメッセージ
22.4 Web Workers
22.4.1 Workerオブジェクト
22.4.2 ワーカーのスコープ
22.4.3 Web Workerの例
22.5 型付き配列とArrayBuffer
22.6 Blob
22.6.1 Blobとしてのファイル
22.6.2 Blobのダウンロード
22.6.3 Blobの構築
22.6.4 Blob URL
22.6.5 Blobの読み出し
22.7 Filesystem API
22.8 クライアントサイドデータベース
22.9 WebSocket