吉川 邦夫(翻訳) , 吉川 邦夫(原著) , ベア・ビボー(著) , ジョン・レシグ(著)
※1点の税込金額となります。 複数の商品をご購入いただいた場合のお支払金額は、 単品の税込金額の合計額とは異なる場合がございますので、予めご了承ください。
JavaScriptは現在のホームページ作りには欠かせないプログラミング言語です。GoogleやFacebookなどの先進のWebアプリケーションはjQueryなどのJavaScriptライブラリを利用して作られていますが、本書はjQueryの開発者であるジョン・レシグが自ら書き起こしたJavaScriptの開発技法書です。
JavaScript言語の各種機能の利用方法から、バグ発見の方法、複数ブラウザへの対応方法まで、JavaScript開発者垂涎のテクニックをふんだんに盛り込みました。「Ninja」とは英語圏ではエキスパートやスーパープログラマの意味で使われる言葉です。本書では“モダンJavaScript開発”における一流プログラマの知識をまとめています。
1.1 本書で手本とするJavaScript ライブラリ
1.2 JavaScript 言語を理解する
1.3 クロスブラウザ性に関する配慮
1.4 現在のベストプラクティス
1.4.1 現在のベストプラクティス:テスト
1.4.2 現在のベストプラクティス:性能分析
1.5 まとめ
2.1 コードをデバッグする
2.1.1 ロギング
2.1.2 ブレークポイント
2.2 テスト生成
2.3 テストフレームワーク
2.3.1 QUnit
2.3.2 YUI Test
2.3.3 JsUnit
2.3.4 新しい単体テストフレームワーク
2.4 テストスイートの基礎
2.4.1 アサート
2.4.2 テストグループ
2.4.3 非同期テスト
2.5 まとめ
3.1 JavaScript の関数は、どこが違うのか
3.1.1 JavaScript の関数的な性質が、なぜ重要なのか?
3.1.2 コンパレータによる比較
3.2 関数の宣言
3.2.1 スコープと関数
3.3 関数の呼び出し
3.3.1 引数から関数のパラメータへ
3.3.2 関数としての呼び出し
3.3.3 メソッドとしての呼び出し
3.3.4 コンストラクタとしての呼び出し
3.3.5 apply()およびcall()メソッドによる呼び出し
3.4 まとめ
4.1 無名関数
4.2 再帰
4.2.1 名前付き関数での再帰
4.2.2 メソッドによる再帰
4.2.3 「参照泥棒」の問題
4.2.4 インラインの名前付き関数
4.2.5 calleeプロパティ
4.3 オブジェクトとしての関数
4.3.1 関数群を収納する
4.3.2 自分をメモ化する関数
4.3.3 配列メソッドをだまして使う
4.4 可変長引数リスト
4.4.1 apply()を使って様々な数の引数を供給する
4.4.2 関数の多重定義
4.5 関数かどうかをチェックする
4.6 まとめ
5.1 クロージャの仕組み
5.2 クロージャを利用する
5.2.1 プライベート変数
5.2.2 コールバックとタイマ
5.3 呼び出しコンテクストをバインドする
5.4 関数の部分適用
5.5 関数の振る舞いをオーバーライドする
5.5.1 メモ化
5.5.2 関数のラッピング
5.6 即時関数
5.6.1 一時的なスコープとプライベート変数
5.6.2 ループ
5.6.3 ライブラリのラッピング
5.7 まとめ
6.1 実体化とプロトタイプ
6.1.1 オブジェクトの実体化
6.1.2 コンストラクタ経由で行われるオブジェクトの「型付け」と逆参照
6.1.3 継承とプロトタイプチェーン
6.1.4 HTML DOM のプロトタイプ
6.2 落とし穴に注意!
6.2.1 オブジェクトの拡張
6.2.2 Numberの拡張
6.2.3 ネイティブオブジェクトを継承する
6.2.4 実体化の問題
6.3 クラスに似たコードを書く
6.3.1 関数シリアライズの可能性をチェックする
6.3.2 サブクラスの初期化
6.3.3 「スーパーメソッド」を保存する
6.4 まとめ
7.1 正規表現のエレガンス
7.2 正規表現の概要
7.2.1 正規表現の説明
7.2.2 項と演算子
7.3 正規表現のコンパイル
7.4 マッチした部分をキャプチャする
7.4.1 単純なキャプチャを実行する
7.4.2 グローバル正規表現によるマッチ
7.4.3 キャプチャを参照する
7.4.4 キャプチャしないグループ
7.5 置換関数を使う
7.6 一般的な諸問題を正規表現で解決する
7.6.1 文字列のトリミング
7.6.2 改行とのマッチ
7.6.3 Unicode
7.6.4 エスケープされた文字
7.7 まとめ
8.1 タイマとスレッドの仕組み
8.1.1 タイマの設定とクリア
8.1.2 スレッド内でのタイマの実行
8.1.3 単発タイマとインターバルタイマの違い
8.2 タイマの最小遅延値と確実性
8.3 計算コストが高い処理に対処する
8.4 タイマの集中管理
8.5 非同期テスト
8.6 まとめ
9.1 コード評価機構
9.1.1 eval()メソッドによる評価
9.1.2 Functionコンストラクタを介しての評価
9.1.3 タイマによる評価
9.1.4 グローバルスコープでの評価
9.1.5 安全なコード評価
9.2 関数の「逆コンパイル」
9.3 コード評価の実践
9.3.1 JSON を変換する
9.3.2 名前空間を持つコードをインポートする
9.3.3 JavaScript の圧縮と難読化
9.3.4 コードの動的な改訂
9.3.5 アスペクト指向のスクリプトタグ
9.3.6 メタ言語とDSL
9.4 まとめ
10.1 with文の効用
10.1.1 withスコープ内でのプロパティ参照
10.1.2 withスコープ内での代入
10.1.3 性能上の注意事項
10.2 実例
10.3 名前空間を持つコードをインポートする
10.4 テスト
10.5 withによるテンプレーティング
10.6 まとめ
11.1 サポートするブラウザの選択
11.2 開発で主に考慮すべき5 つの事項
11.2.1 ブラウザのバグと相違
11.2.2 ブラウザのバグ修正
11.2.3 外部のコードやマークアップとの共存
11.2.4 欠けている機能
11.2.5 リグレッション
11.3 実装の戦略
11.3.1 安全なクロスブラウザ修正
11.3.2 オブジェクト検出
11.3.3 機能シミュレーション
11.3.4 テストできないブラウザの問題
11.4 想定を切り詰める
11.5 まとめ
12.1 DOM における属性とプロパティ
12.1.1 名前のクロスブラウザ性
12.1.2 命名の制限
12.1.3 HTML とXML の違い
12.1.4 カスタム属性の振る舞い
12.1.5 性能に対する配慮
12.2 属性のクロスブラウザ問題
12.2.1 DOM におけるID/名前の増殖
12.2.2 URL の正規化
12.2.3 style属性
12.2.4 type属性
12.2.5 タブインデックス問題
12.2.5 ノード名
12.3 スタイル属性の注意点
12.3.1 スタイルはどこに記録されるか
12.3.2 スタイルプロパティの命名
12.3.3 floatのスタイルプロパティ
12.3.4 ピクセル値の変換
12.3.5 高さと幅の寸法
12.3.6 要素の不透明度
12.3.7 色の様々な表現
12.4 算出スタイルを取り出す
12.5 まとめ
13.1 イベントハンドラの結合と解除
13.2 Eventオブジェクト
13.3 ハンドラ管理
13.3.1 関連情報を集中管理する
13.3.2 イベントハンドラの管理
13.4 イベントをトリガする
13.4.1 カスタムイベント
13.5 バブリングと委譲
13.5.1 イベントを先祖要素に委譲する
13.5.2 ブラウザの欠陥を回避する
13.6 文書の「レディ」イベント
13.7 まとめ
14.1 DOMにHTML を注入する
14.1.1 HTML をDOM に変換する
14.1.2 ドキュメントに挿入する
14.1.3 スクリプトの実行
14.2 要素を複製する
14.3 要素を削除する
14.4 テキスト内容
14.4.1 テキストを設定する
14.4.2 テキストを取得する
14.5 まとめ
15.1 W3CのセレクタAPI
15.2 XPath を使って要素を探す
15.3 純粋なDOM による実装
15.3.1 セレクタを解析する
15.3.2 要素を見つける
15.3.3 結果の集合をフィルタにかける
15.3.4 再帰とマージ
15.3.5 ボトムアップ式のセレクタエンジン
15.4 まとめ
しんしん さん
2015-09-01
「JavaScript使いのJavaScript知らず」がプログラマの中でも多いような気がする。恥ずかしながら自分もその一人だ。この本はコードを追って納得しながらJavaScriptのことを深く知れるすごい本だ。
Masahiro Oono さん
2020-02-03
Part2のシングルスレッドにおけるタイマの振る舞いと非同期イベントの進行との関係についてや、プロトタイプによるオブジェクト指向について、クロージャについての詳しい解説が特に有益だった。Part3以降は流し読み。
tsq さん
2017-05-02
こういうのが読みたかったんだよ。DOMじゃなくてjavascriptを勉強したいんだよっていう人にオススメ。読んでて楽しい。