JavaScriptパターン

―優れたアプリケーションのための作法

[cover photo]
TOPICS
Programming , Web , JavaScript
発行年月日
PRINT LENGTH
244
ISBN
978-4-87311-488-0
原書
JavaScript Patterns
FORMAT
Print PDF
Ebook
3,080円
Ebookを購入する
Print
3,080円

JavaScriptについては一通りマスターした中上級者がさらに上を目指すための高度でかつ有用なテクニックを盛り込んでいます。デザインパターン、コーディングパターン、アンチパターンに基づき、いままで以上にJavaScriptを使いこなし、プログラミングの力を向上させ、JavaScriptのエキスパートになるための知識と技を豊富に紹介。次のステップに踏み出したいプログラマにとって貴重な情報源となる一冊です。Yahoo!のエンジニアとして数々の有用なアプリケーションの開発に携わってきた著者がJavaScriptを200%使いこなすための秘伝を伝授します。

目次

まえがき
1章 はじめに
    1.1 パターン
    1.2 JavaScriptの概念
        1.2.1 オブジェクト指向
        1.2.2 クラスというものはない
        1.2.3 プロトタイプ
        1.2.4 環境
    1.3 ECMAScript 5
    1.4 JSLint
    1.5 コンソール
2章 必須パターン
    2.1 保守しやすいコードを書く
    2.2 グローバル変数の使用を最小にする
        2.2.1 グローバル変数を使うときの問題
        2.2.2 varを忘れたときの副作用
        2.2.3 グローバルオブジェクトへのアクセス
        2.2.4 単独varパターン
        2.2.5 巻き上げ:散乱したvarの問題
    2.3 forループ
    2.4 for-inループ
    2.5 組み込みプロトタイプを拡張(しない)
    2.6 switchパターン
    2.7 暗黙の型変換を避ける
        2.7.1 eval()を避ける
    2.8 parseInt()による数値変換
    2.9 コーディングの作法
        2.9.1 インデント
        2.9.2 波括弧
        2.9.3 波括弧を開く位置
        2.9.4 空白
    2.10 命名の作法
        2.10.1 コンストラクタの頭文字は大文字にする
        2.10.2 単語で分ける
        2.10.3 その他の命名パターン
    2.11 コメントを書く
    2.12 APIのドキュメントを書く
        2.12.1 YUIDocの例
    2.13 読み手を考えて書く
    2.14 ピアレビュー
    2.15 プロダクション段階でミニファイする
    2.16 JSLintを実行する
    2.17 まとめ
3章 リテラルとコンストラクタ
    3.1 オブジェクトリテラル
        3.1.1 オブジェクトリテラルの構文
        3.1.2 コンストラクタからオブジェクトを作る
        3.1.3 オブジェクトコンストラクタの落とし穴
    3.2 カスタムのコンストラクタ関数
        3.2.1 コンストラクタの戻り値
    3.3 newを強制するパターン
        3.3.1 命名の作法
        3.3.2 thatを使う
        3.3.3 自己呼び出しコンストラクタ
    3.4 配列リテラル
        3.4.1 配列リテラルの構文
        3.4.2 配列コンストラクタの奇妙な振る舞い
        3.4.3 配列かどうかの検査
    3.5 JSON
        3.5.1 JSONを使った処理
    3.6 正規表現リテラル
        3.6.1 正規表現リテラルの構文
    3.7 プリミティブのラッパー
    3.8 エラーオブジェクト
    3.9 まとめ
4章 関数
    4.1 背景
        4.1.1 用語の整理
        4.1.2 宣言と式:名前と巻き上げ
        4.1.3 関数のnameプロパティ
        4.1.4 関数の巻き上げ
    4.2 コールバックパターン
        4.2.1 コールバックの例
        4.2.2 コールバックとスコープ
        4.2.3 非同期イベントリスナ
        4.2.4 タイムアウト
        4.2.5 ライブラリで使うコールバック
    4.3 関数を返す
    4.4 自己定義関数
    4.5 即時関数
        4.5.1 即時関数のパラメータ
        4.5.2 即時関数からの戻り値
        4.5.3 利点と使い方
    4.6 即時オブジェクト初期化
    4.7 初期化時分岐
    4.8 関数プロパティによるメモ化パターン
    4.9 設定オブジェクト
    4.10 カリー化
        4.10.1 関数の適用
        4.10.2 部分適用
        4.10.3 カリー化
        4.10.4 いつカリー化を使うべきか
    4.11 まとめ
5章 オブジェクト作成のパターン
    5.1 名前空間パターン
        5.1.1 汎用の名前空間関数
    5.2 依存関係の宣言
    5.3 プライベートなプロパティとメソッド
        5.3.1 プライベートメンバ
        5.3.2 特権メソッド
        5.3.3 プライバシーの侵犯
        5.3.4 オブジェクトリテラルとプライバシー
        5.3.5 プロトタイプとプライバシー
        5.3.6 プライベート関数をパブリックメソッドとして開示する
    5.4 モジュールパターン
        5.4.1 モジュールパターンの開示
        5.4.2 コンストラクタを作成するモジュール
        5.4.3 グローバル変数をモジュールに取り込む
    5.5 サンドボックスパターン
        5.5.1 グローバルコンストラクタ
        5.5.2 モジュールの追加
        5.5.3 コンストラクタの実装
    5.6 静的メンバ
        5.6.1 パブリックな静的メンバ
        5.6.2 プライベートな静的メンバ
    5.7 オブジェクト定数
    5.8 連鎖パターン
        5.8.1 連鎖パターンの利点と欠点
    5.9 method()メソッド
    5.10 まとめ
6章 コード再利用パターン
    6.1 クラシカルとモダンの継承パターン対決
    6.2 クラシカルな継承を使ったとき期待される結果
    6.3 クラシカルなパターンその1:デフォルトパターン
        6.3.1 プロトタイプ連鎖をたどる
        6.3.2 パターンその1を使うときの欠点
    6.4 クラシカルなパターンその2:コンストラクタ拝借
        6.4.1 プロトタイプ連鎖
        6.4.2 コンストラクタを拝借して多重継承
        6.4.3 コンストラクタ拝借パターンの利点と欠点
    6.5 クラシカルなパターンその3:プロトタイプを拝借して設定する
    6.6 クラシカルなパターンその4:プロトタイプを共有する
    6.7 クラシカルなパターンその5:一時的コンストラクタ
        6.7.1 スーパークラスを格納する
        6.7.2 コンストラクタのポインタを再設定する
    6.8 Klass
    6.9 プロトタイプによる継承
        6.9.1 解説
        6.9.2 ECMAScript 5に追加されたもの
    6.10 プロパティのコピーによる継承
    6.11 ミックスイン
    6.12 メソッドを拝借する
        6.12.1 例:配列から拝借
        6.12.2 拝借と束縛
        6.12.3 Function.prototype.bind()
    6.13 まとめ
7章 デザインパターン
    7.1 シングルトン
        7.1.1 newを使ってシングルトンを作る
        7.1.2 静的プロパティにインスタンスをキャッシュする
        7.1.3 クロージャーにインスタンスをキャッシュする
    7.2 ファクトリ
        7.2.1 組み込みのオブジェクトファクトリ
    7.3 イテレータ
    7.4 デコレータ
        7.4.1 使い方
        7.4.2 実装
        7.4.3 リストを使った実装
    7.5 ストラテジー
        7.5.1 データ検証の例
    7.6 ファサード
    7.7 プロキシ
        7.7.1 事例
        7.7.2 キャッシュとしてのプロキシ
    7.8 メディエータ
        7.8.1 メディエータの例
    7.9 オブザーバ
        7.9.1 例その1:雑誌の購読
        7.9.2 例その2:キープレスゲーム
    7.10 まとめ
8章 DOMとブラウザのパターン
    8.1 関心の分離
    8.2 DOMスクリプティング
        8.2.1 DOMアクセス
        8.2.2 DOM操作
    8.3 イベント
        8.3.1 イベント処理
        8.3.2 イベント委譲
    8.4 実行時間が長いスクリプト
        8.4.1 setTimeout()
        8.4.2 ウェブワーカー
    8.5 リモートスクリプティング
        8.5.1 XMLHttpRequest
        8.5.2 JSONP
        8.5.3 フレームと画像ビーコン
    8.6 JavaScriptの配備
        8.6.1 スクリプトをまとめる
        8.6.2 ミニファイする、あるいは圧縮する
        8.6.3 Expiresヘッダ
        8.6.4 CDNを使う
    8.7 読み込みのための戦略
        8.7.1 script要素をどこに書くか
        8.7.2 HTTPのチャンク形式
        8.7.3 script要素を動的にしてダウンロードのブロッキングを回避する
        8.7.4 遅延読み込み
        8.7.5 オンデマンドで読み込む
        8.7.6 JavaScriptを事前に読み込む
    8.8 まとめ
索引