オライリー JavaScript

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

オライリー JavaScript 第6版

についてまとめました。

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

1章 JavaScriptの概要

  • 1.1 コアJavaScript言語
  • 1.2 クライアントサイドJavaScript
    • 例1-1 JavaScriptを使った住宅ローン計算機

第1部 コアJavaScript

2章 字句構造

3章 型、値、変数

4章 式と演算子

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章 オブジェクト

7章 配列

8章 関数

9章 クラスとモジュール

  • 9.1 クラスとプロトタイプ
    • 例9-1 単純なJavaScriptクラス
  • 9.2 クラスとコンストラクタ
    • 例9-2 コンストラクタを使ったRangeクラス
  • 9.2.1 コンストラクタとクラスの同一性
  • 9.2.2 constructorプロパティ
  • 9.3 JavaScriptでのJavaスタイルのクラス
    • 例9-3 Complex.js:複素数クラス
  • 9.4 クラスの拡張
  • 9.5 クラスと型
  • 9.5.1 instanceof演算子
  • 9.5.2 constructorプロパティ
  • 9.5.3 コンストラクタ名
    • 例9-4 値の型を判定するtype()関数
  • 9.5.4 ダックタイピング
    • 例9-5 ダックタイピング確認用の関数
  • 9.6 JavaScriptでのオブジェクト指向的な技術
  • 9.6.1 例:Setクラス
    • 例 9-6 Set.js:値の任意のセット
  • 9.6.2 例:列挙型
    • 例9-7 JavaScriptでの列挙型
    • 例9-8 列挙型を使ってトランプを表す
  • 9.6.3 標準的な型変換メソッド
  • 9.6.4 比較用のメソッド
  • 9.6.5 メソッドの借用
    • 例9-9 借用可能な汎用的なメソッド
  • 9.6.6 プライベートな状態
    • 例9-10 弱くカプセル化した両端を持つRangeクラス
  • 9.6.7 コンストラクタオーバーロードとファクトリメソッド
  • 9.7 サブクラス
  • 9.7.1 サブクラスの定義
    • 例9-11 サブクラス定義ユーティリティ
    • 例9-12 SingletonSet:Setの単純なサブクラス
  • 9.7.2 コンストラクタチェーンとメソッドチェーン
    • 例9-13 サブクラスからスーパークラスへのコンストラクタチェーンとメソッドチェーン
    • 例9-14 クラスファクトリとメソッドチェーン
  • 9.7.3 合成とサブクラス
    • 例9-15 セットをサブクラス化する代わりに合成を使う
  • 9.7.4 クラス階層と抽象クラス
    • 例9-16 中小Setクラスと具象クラスの階層構造
  • 9.8 ECMAScript5のクラス
  • 9.8.1 プロパティを列挙不可にする
    • 例9-17 列挙不可プロパティの定義
  • 9.8.2 不変クラスの定義
    • 例9-18 読み出し専用のプロパティと、メソッドを持つ不変クラス
    • 例9-19 プロパティディスクリプタユーティリティ
    • 例9-20 ユーティリティ関数を使った不変クラス
  • 9.8.3 オブジェクト状態のカプセル化
    • 例9-21 両端を強くカプセル化したRangeクラス
  • 9.8.4 クラス拡張の抑止
  • 9.8.5 サブクラスとECMAScript5
    • 例9-22 StringSet:ECMAScript5を使ったSetサブクラス
  • 9.8.6 プロパティディスクリプタ
    • 例9-23 ECMAScript5のプロパティユーティリティ
  • 9.9 モジュール
  • 9.9.1 名前空間としてのオブジェクト
  • 9.9.2 プライベートな名前空間としての関数スコープ
    • 例9-24 モジュール関数中のSetクラス

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

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-1 ジェネレータのパイプ
  • 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-1 Rhinoを使ったダウンロードマネージャアプリケーション
  • 12.2 Nodeによる非同期I/O
  • 12.2.1 Nodeの例:HTTPサーバ
    • 例12-2 Nodeで記述したHTTPサーバー
    • 例12-3 Nodeによる”httputils”モジュール
  • 12.2.2 Nodeの例:HTTPクライアントユーティリティモジュール

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

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

14章 Windowsオブジェクト

15章 ドキュメントの制御

16章 CSSの制御

17章 イベント処理

18章 HTTPの制御

19章 jQueryライブラリ

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-1 document.cookiesプロパティの解釈
  • 20.2.4 クッキーの制限事項
  • 20.2.5 クッキーによるStorage
    • 例20-2 クッキーによるStorage APIの実装
  • 20.3 IEのuserData 永続化機構
    • 例20-3 IEのuserDataによるStorage API(一部)の実装
  • 20.4 アプリケーションストレージとオフラインWebアプリケーション
  • 20.4.1 アプリケーションキャッシュマニュフェスト
  • 20.4.1.1 複雑なマニュフェスト
  • 20.4.2 キャッシュの更新
    • 例20-4 アプリケーションキャッシュイベントの処理
  • 20.4.3 オフラインWebアプリケーション
    • 例20-5 permanote.appcache
    • 例20-6 permanote.html
    • 例20-7 permanote.js

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

  • 21.1 スクリプトによる画像の判断
  • 21.1.1 控えめな画像ロールオーバー
    • 例21-1 控えめなロールオーバー
  • 21.2 オーディオとビデオのスクリプト制御
  • 12.2.1 タイプ選択と読み込み
  • 12.2.2 メディアの再生と制御
  • 12.2.3 メディア状態の問い合わせ
  • 12.2.4 メディアイベント
  • 21.3 SVG(Scalable Vector Graphics)
    • 例21-2 JavaScriptとSVGを使って円グラフを描画する
    • 例21-3 SVG画像を操作して時刻を表示する
  • 21.4 <canvas>中のグラフィック
  • 21.4.1 線の描画とポリゴンの塗りつぶし
    • 例21-4 moveTo()、lineTo()、closePath()を使って一般的な多角形を描画する
    • 例21-5 グラフィック状態管理ユーティリティ
  • 21.4.2 グラフィック属性
  • 21.4.3 キャンバスの大きさと座標
  • 21.4.4 座標系変換
  • 21.4.4.1 座標系変換の数学的解釈
  • 21.4.4.2 座標変換の例
    • 例21-6 座標系変換によるコッホ雪片
  • 21.4.5 曲線の描画と塗りつぶし
    • 例21-7 パスに曲線を追加する
  • 21.4.6 矩形
  • 21.4.7 色、透明度、グラデーション、パターン
  • 21.4.8 線描画属性
  • 21.4.9 テキスト
  • 21.4.10 クリッピング
  • 21.4.11 影
    • 例21-8 影属性を設定する
  • 21.4.12 画像
    • 例21-9 drawImage()の利用
  • 21.4.13 合成
  • 21.4.14 ピクセル操作
    • 例21-10 ImageDataを使ったぼかし処理
  • 21.4.15 衝突判定
    • 例21-11 マウスイベントが現在のパス上に存在するかどうかをテストする
    • 例21-12 マウスイベントが塗りつぶしたピクセル上で発生したかテストする
  • 21.4.16 キャンバスの例:スパークライン
    • 例21-13 <canvas>要素を使ったスパークライン

22章 HTML5 API

  • 22.1 GeoLocation
    • 例22-1 位置情報を使って地図を表示する
    • 例22-2 位置情報の利用例
  • 22.2 履歴管理
    • 例22-3 pushState()を使った履歴管理
  • 22.3 クロスオリジンメッセージ
    • 例22-4 postMessage()で制御するTwitter検索ガジェット
    • 例22-5 postMessage()を使ってTwitter検索ガジェットを利用する
  • 22.4 Web Workers
  • 22.4.1 Workerオブジェクト
  • 22.4.2 ワーカーのスコープ
  • 22.4.3 Web Workerの例
    • 例22-6 画像処理用のWeb workersを作成する
    • 例22-7 Web Workersの中の画像処理
    • 例22-8 Web Workers中で同期型XMLHttpRequestを発行する
  • 22.5 型付き配列とArrayBuffer
  • 22.6 Blob
  • 22.6.1 Blobとしてのファイル
  • 22.6.2 Blobのダウンロード
    • 例22-9 XMLHttpRequestを使ってBlobをダウンロードする
  • 22.6.3 Blobの構築
  • 22.6.4 Blob URL
    • 例22-10 ドロップされた画像ファイルをBlob URL付きで表示する
  • 22.6.5 Blobの読み出し
    • 例22-11 FileReaderを使ってテキストファイルを読み出す
    • 例22-12 ファイルの最初の4バイトを読み出す
  • 22.7 Filesystem API
    • 例22-13 非同期ファイルシステムAPIの利用
    • 例22-14 同期型のファイルシステムAPI
  • 22.8 クライアントサイドデータベース
    • 例22-15 US郵便番号のIndexedDBデータベース
  • 22.9 WebSocket
    • 例22-16 WebSocketベースのチャットクライアント
    • 例22-17 WebSocketとNodeを使ったチャットサーバ

参考書籍:

オライリー JavaScript 第6版