本書は『JavaScript: The Definitive Guide, Fifth Edition』の日本語版です。日本語版出版にあたり、言語解説部分とリファレンス部分に分け、本書はその言語解説部分をまとめたものです。
この第5版では、JavaScript1.5に対応させるため全章の内容を更新し、XMLHTTPRequestオブジェクトでスクリプトからHTTPリクエストに送信する方法、JavaScriptを使ってXMLデータの制御、またJavaScriptによるグラフィックの制御機能についてなど、新しい話題を追加しました。
第1部ではプログラミング言語を習得するときに理解しておかなければならない基礎知識、またクロージャや名前空間など、コアJavaScriptについての知識を深める項目を学習し、第2部ではクライアントサイドJavaScriptの基本機能とHTTPの制御やJavaアプレットなど、高度なトピックの両方について解説します。
言語としてのJavaScriptについての詳しい解説はそのままに、最新のトピックを取り入れた本書はプログラマ必携の一冊です。
リファレンス部分はこちらの書籍です。
『JavaScriptクイックリファレンス 第5版』
JavaScript 第5版
David Flanagan 著、村上 列 訳
- TOPICS
- Programming
- 発行年月日
- 2007年08月
- PRINT LENGTH
- 704
- ISBN
- 978-4-87311-329-6
- 原書
- JavaScript: The Definitive Guide, Fifth Edition
- FORMAT
目次
訳者まえがき はじめに 1章 JavaScriptの概要 1.1 JavaScriptとは何か 1.1.1 JavaScriptとJavaは同じものか 1.1.2 JavaScriptは簡単か 1.2 JavaScriptのさまざまなバージョン 1.3 クライアントサイドJavaScript 1.3.1 クライアントサイドJavaScriptの例 1.4 クライアントサイドJavaScript以外のJavaScript 1.5 JavaScriptの学習方法 第1部 コアJavaScript 2章 字句構造 2.1 文字コード 2.2 大文字と小文字 2.3 空白スペースと改行 2.4 セミコロン 2.5 コメント 2.6 リテラル 2.7 識別子 2.8 予約語 3章 データ型と値 3.1 数値 3.1.1 整数リテラル 3.1.2 16進と8進の整数リテラル 3.1.3 浮動小数点リテラル 3.1.4 数値の操作 3.1.5 数値変換 3.1.6 特殊な数値 3.2 文字列 3.2.1 文字列リテラル 3.2.2 文字列リテラルのエスケープシーケンス 3.2.3 文字列の操作 3.2.4 数値から文字列への変換 3.2.5 文字列から数値への変換 3.3 論理値 3.3.1 論理値の型変換 3.4 関数 3.4.1 関数リテラル 3.5 オブジェクト 3.5.1 オブジェクトの生成 3.5.2 オブジェクトリテラル 3.5.3 オブジェクトの型変換 3.6 配列 3.6.1 配列の生成 3.6.2 配列リテラル 3.7 null値 3.8 未定義(undefined)値 3.9 Dateオブジェクト 3.10 正規表現 3.11 Errorオブジェクト 3.12 型変換のまとめ 3.13 基本データ型のラッパーオブジェクト 3.14 オブジェクトから基本データ型への変換 3.15 「値による」データ型操作と「参照による」データ型操作 3.15.1 基本型と参照型 3.15.2 文字列は「値による」のか「参照による」のか 3.15.3 文字列の比較 3.15.4 「値による」データ型の操作と「参照による」データ型操作のまとめ 4章 変数 4.1 変数の型 4.2 変数の宣言 4.2.1 宣言の繰り返しと省略 4.3 変数のスコープ 4.3.1 ブロックレベルのスコープはない 4.3.2 未定義と未代入 4.4 基本型と参照型 4.5 ガーベジコレクション 4.6 プロパティと変数は違うのか 4.6.1 グローバルオブジェクト 4.6.2 ローカル変数はCallオブジェクトのプロパティ 4.6.3 JavaScriptの実行コンテキスト 4.7 変数のスコープの再検討 5章 式と演算子 5.1 式 5.2 演算子の概要 5.2.1 オペランドの数 5.2.2 オペランドの型 5.2.3 演算子の優先順位 5.2.4 演算子の結合性 5.3 算術演算子 5.4 等値演算子 5.4.1 等値演算子(==)と同値演算子(===) 5.4.2 不等演算子(!=)と非同値演算子(!==) 5.5 関係演算子 5.5.1 比較演算子 5.5.2 in演算子 5.5.3 instanceof演算子 5.6 文字列演算子 5.7 論理演算子 5.7.1 論理積演算子(&&) 5.7.2 論理和演算子(||) 5.7.3 論理否定演算子(!) 5.8 ビット演算子 5.9 代入演算子 5.9.1 算術演算を伴う代入演算子 5.10 そのほかの演算子 5.10.1 条件演算子(?:) 5.10.2 typeof演算子 5.10.3 オブジェクト生成演算子(new) 5.10.4 delete演算子 5.10.5 void演算子 5.10.6 カンマ演算子 5.10.7 配列とオブジェクトにアクセスする演算子 5.10.8 関数呼び出し演算子 6章 文 6.1 式文 6.2 複合文 6.3 if文 6.3.1 if文の第1の書式 6.3.2 if文の第2の書式 6.4 else if文 6.5 switch文 6.6 while文 6.7 do/while文 6.8 for文 6.9 for/in文 6.10 ラベル文 6.11 break文 6.12 continue文 6.13 var文 6.14 function文 6.15 return文 6.16 throw文 6.17 try/catch/finally文 6.18 with文 6.19 空文 6.20 JavaScript文のまとめ 7章 オブジェクトと配列 7.1 オブジェクトの生成 7.2 オブジェクトのプロパティ 7.2.1 オブジェクトプロパティの調査 7.2.2 プロパティの存在確認 7.2.3 プロパティの削除 7.3 連想配列としてのオブジェクト 7.4 Objectのプロパティとメソッド 7.4.1 constructorプロパティ 7.4.2 toString()メソッド 7.4.3 toLocaleString()メソッド 7.4.4 valueOf()メソッド 7.4.5 hasOwnProperty()メソッド 7.4.6 propertyIsEnumerable()メソッド 7.4.7 isPrototypeOf()メソッド 7.5 配列 7.6 配列の要素の読み書き 7.6.1 配列の要素の追加 7.6.2 配列の要素の削除 7.6.3 配列の長さ 7.6.4 配列の要素の巡回 7.6.5 配列の長さの変更 7.6.6 多次元配列 7.7 配列のメソッド 7.7.1 join()メソッド 7.7.2 reverse()メソッド 7.7.3 sort()メソッド 7.7.4 concat()メソッド 7.7.5 slice()メソッド 7.7.6 splice()メソッド 7.7.7 push()メソッドとpop()メソッド 7.7.8 unshift()メソッドとshift()メソッド 7.7.9 toString()メソッドとtoLocaleString()メソッド 7.7.10 JavaScript 1.6で追加されたメソッド 7.8 配列のようなオブジェクト 8章 関数 8.1 関数の定義と呼び出し 8.1.1 入れ子型の関数 8.1.2 関数リテラル 8.1.3 関数の命名規則 8.2 関数の引数 8.2.1 省略可能な引数 8.2.2 可変長の引数リスト(Argumentsオブジェクト) 8.2.3 引数としてオブジェクトのプロパティを利用 8.2.4 引数の型 8.3 データとしての関数 8.4 メソッドとしての関数 8.5 コンストラクタ関数 8.6 関数のプロパティとメソッド 8.6.1 lengthプロパティ 8.6.2 prototypeプロパティ 8.6.3 自分専用の関数プロパティの定義 8.6.4 apply()メソッドとcall()メソッド 8.7 ユーティリティ関数 8.8 関数のスコープとクロージャ 8.8.1 静的なスコープ 8.8.2 Callオブジェクト 8.8.3 名前空間としてのCallオブジェクト 8.8.4 クロージャとしての入れ子型の関数 8.9 Function()コンストラクタ 9章 クラスとコンストラクタとプロトタイプ 9.1 コンストラクタ 9.2 プロトタイプと継承 9.2.1 継承プロパティへのアクセス 9.2.2 組み込み型の拡張 9.3 JavaScriptの「クラス」 9.3.1 インスタンスプロパティ 9.3.2 インスタンスメソッド 9.3.3 クラスプロパティ 9.3.4 クラスメソッド 9.3.5 Circleクラスの例 9.3.6 複素数のコード例 9.3.7 プライベートメンバ 9.4 オブジェクト共通メソッド 9.4.1 toString()メソッド 9.4.2 valueOf()メソッド 9.4.3 比較用のメソッド 9.5 スーパークラスとサブクラス 9.5.1 コンストラクタチェーン 9.5.2 オーバーライドされたメソッドの呼び出し 9.6 継承以外のクラス拡張方法 9.7 オブジェクトクラスの判定 9.7.1 instanceof演算子とコンストラクタ 9.7.2 Object.toString()メソッドによる型判定 9.7.3 ダックタイピング 9.8 例:defineClass()ユーティリティメソッド 10章 モジュールと名前空間 10.1 モジュールと名前空間の生成 10.1.1 モジュールの可用性のチェック 10.1.2 モジュールとしてのクラス 10.1.3 モジュール初期化コード 10.2 名前空間からのシンボルのインポート 10.2.1 パブリックシンボルとプライベートシンボル 10.2.2 プライベートな名前空間とスコープとしてのクロージャ 10.3 モジュールユーティリティ 11章 正規表現パターンマッチング 11.1 正規表現の定義 11.1.1 リテラル文字 11.1.2 文字クラス 11.1.3 繰り返し 11.1.4 選択、グループ化、参照 11.1.5 一致位置の指定 11.1.6 フラグ 11.1.7 JavaScriptでサポートされないPerlの正規表現機能 11.2 パターンマッチング用の文字列メソッド 11.3 RegExpオブジェクト 11.3.1 パターンマッチング用のRegExpメソッド 11.3.2 RegExpインスタンスプロパティ 12章 Javaをスクリプトする 12.1 JavaScriptの組み込み 12.1.1 javax.scriptの型変換 12.1.2 スクリプトのコンパイル 12.1.3 JavaScriptの関数の呼び出し 12.1.4 JavaScriptでのインタフェースの実装 12.2 Javaをスクリプトする 12.2.1 JavaPackageクラス 12.2.2 JavaClassクラス 12.2.3 パッケージとクラスのインポート 12.2.4 JavaObjectクラス 12.2.5 Javaメソッド 12.2.6 JavaArrayクラス 12.2.7 LiveConnectでのインタフェースの実装 12.2.8 LiveConnectのデータ変換 第2部 クライアントサイドJavaScript 13章 Webブラウザに組み込まれたJavaScript 13.1 Webブラウザ環境 13.1.1 グローバル実行コンテキストとなるWindowオブジェクト 13.1.2 クライアントサイドオブジェクトの階層構造とDOM 13.1.3 イベント駆動型のプログラミングモデル 13.1.4 WebにおけるJavaScriptの役割 13.1.5 控えめなJavaScript 13.2 HTMLドキュメントへのJavaScriptコードの埋め込み 13.2.1 <script>タグ 13.2.2 外部ファイルのスクリプト 13.2.3 スクリプト言語の指定 13.2.4 defer属性 13.2.5 <noscript>タグ 13.2.6 </script>タグ 13.2.7 古いブラウザからスクリプトを見えないようにする 13.2.8 <script>タグの非標準属性 13.3 HTMLドキュメント内のイベントハンドラ 13.4 URLへのJavaScriptの記述 13.4.1 ブックマークレット 13.5 JavaScriptプログラムの実行方法 13.5.1 スクリプトの実行 13.5.2 onloadイベントハンドラ 13.5.3 イベントハンドラとJavaScript URL 13.5.4 onunloadイベントハンドラ 13.5.5 実行コンテキストとしてのWindowオブジェクト 13.5.6 クライアントサイドJavaScriptのスレッドモデル 13.5.7 ロード時のドキュメントの操作 13.6 クライアントサイドJavaScriptの互換性 13.6.1 非互換性の歴史 13.6.2 「最近のブラウザ」の意味するもの 13.6.3 機能テスト 13.6.4 ブラウザテスト 13.6.5 Internet Explorerの条件付きコメント 13.7 アクセサビリティ 13.8 JavaScriptのセキュリティ 13.8.1 JavaScriptではできないこと 13.8.2 同一出身ポリシー 13.8.3 プラグインやActive Xコントロールの制御 13.8.4 クロスサイトスクリプティング 13.8.5 DoS攻撃 13.9 そのほかのWeb関連の組み込みJavaScript 14章 ブラウザウィンドウの制御 14.1 タイマー 14.2 LocationオブジェクトとHistoryオブジェクト 14.2.1 URLの解析 14.2.2 新しいドキュメントのロード 14.2.3 Historyオブジェクト 14.3 ウィンドウ、画面、ブラウザ情報の取得 14.3.1 ウィンドウのサイズと位置情報 14.3.2 Screenオブジェクト 14.3.3 Navigatorオブジェクト 14.4 ウィンドウのオープンと制御 14.4.1 ウィンドウのオープン 14.4.2 ウィンドウのクローズ 14.4.3 ウィンドウの移動とサイズの変更 14.4.4 キーボードフォーカスとウィンドウ表示 14.4.5 スクロール 14.4.6 Windowオブジェクトのメソッドの使用例 14.5 簡単なダイアログボックス 14.6 ステータス行の制御 14.7 エラー処理 14.8 複数のウィンドウとフレーム 14.8.1 フレーム間の関係 14.8.2 ウィンドウ名とフレーム名 14.8.3 相互作用するウィンドウでのJavaScriptの使用 14.9 例:フレーム中のナビゲーションバー 15章 ドキュメントの制御 15.1 ドキュメントコンテンツの動的な生成 15.2 Documentオブジェクトのプロパティ 15.3 レガシーDOM:Documentオブジェクトの配列プロパティ 15.3.1 ドキュメントのオブジェクトへの名前付け 15.3.2 Documentオブジェクトのイベントハンドラ 15.3.3 レガシーDOMの例 15.4 W3C DOMの概要 15.4.1 ドキュメントをツリー構造として表現 15.4.2 ノード 15.4.3 DOM HTML API 15.4.4 DOMレベルと機能 15.4.5 DOM適合性 15.4.6 プログラミング言語から独立したDOMインタフェース 15.5 ドキュメントの探索 15.6 ドキュメント中の要素の検索 15.7 ドキュメントの変更 15.7.1 属性の変更 15.7.2 ドキュメントフラグメントの操作 15.8 ドキュメントコンテンツの追加 15.8.1 ノード作成用の便利なメソッド 15.8.2 innerHTMLプロパティ 15.9 例:目次の動的な生成 15.10 選択されたテキストの読み出し 15.11 IE 4 DOM 15.11.1 ドキュメントの探索 15.11.2 ドキュメント要素の検索 15.11.3 ドキュメントの変更 16章 CSSとダイナミックHTML 16.1 CSSの概要 16.1.1 ドキュメントの要素へのスタイルルールの適用 16.1.2 ドキュメントとスタイルシートの関連付け 16.1.3 カスケード 16.1.4 CSSのバージョン 16.1.5 CSSの使用例 16.2 DHTMLのためのCSS 16.2.1 DHTMLの鍵となる絶対位置指定 16.2.2 CSSによる位置指定の例:影付きテキスト 16.2.3 要素の位置とサイズのチェック 16.2.4 3次元座標:z-index 16.2.5 要素の表示方法と可視性 16.2.6 CSSボックスモデルと位置指定の詳細 16.2.7 色と透明度 16.2.8 部分表示:overflowとclip 16.2.9 例:半透明のウィンドウを重ね合わせる 16.3 インラインスタイルの制御 16.3.1 JavaScriptでのCSS属性の命名規則 16.3.2 スタイルプロパティの操作 16.3.3 例:CSSツールチップ 16.3.4 DHTMLアニメーション 16.4 算出スタイルの制御 16.5 CSSクラスの制御 16.6 スタイルシートの制御 16.6.1 スタイルシートの有効化と無効化 16.6.2 スタイルシートオブジェクトとスタイルシートルール 17章 イベントとイベント処理 17.1 基本的なイベント処理 17.1.1 イベントとイベントタイプ 17.1.2 属性としてのイベントハンドラ 17.1.3 プロパティとしてのイベントハンドラ 17.1.4 イベントハンドラの戻り値 17.1.5 イベントハンドラとthisキーワード 17.1.6 イベントハンドラのスコープ 17.2 DOMレベル2の高度なイベント処理 17.2.1 イベント伝播 17.2.2 イベントハンドラの登録 17.2.3 addEventListener()とthisキーワード 17.2.4 オブジェクトのイベントハンドラとしての登録 17.2.5 イベントモジュールとイベントタイプ 17.2.6 イベントインタフェースとイベントの詳細 17.2.7 イベントモデルの混在 17.3 Internet Explorerのイベントモデル 17.3.1 IEのEventオブジェクト 17.3.2 グローバル変数としてのIEのEventオブジェクト 17.3.3 IEでのイベントハンドラの登録 17.3.4 IEでのイベントバブリング 17.3.5 マウスイベントのキャプチャリング 17.3.6 attachEvent()とthisキーワード 17.3.7 イベントハンドラとメモリリーク 17.3.8 例:IEでのイベントモデル互換モジュール 17.4 マウスイベント 17.4.1 マウス座標の変換 17.4.2 例:ドキュメント要素のドラッグ 17.5 キーイベント 17.5.1 キーイベントの種類 17.5.2 キーイベントの詳細 17.5.3 キーボードからの入力のフィルタリング 17.5.4 キーマップを使ったキーボードショートカット 17.6 onloadイベント 17.7 合成イベント 18章 フォームとフォーム要素 18.1 Formオブジェクト 18.2 フォーム要素の定義 18.3 フォーム要素の制御 18.3.1 フォームとフォーム要素の命名規則 18.3.2 フォーム要素のプロパティ 18.3.3 フォーム要素のイベントハンドラ 18.3.4 プッシュボタン 18.3.5 トグルボタン 18.3.6 テキストフィールド 18.3.7 Select要素とOption要素 18.3.8 Hidden要素 18.3.9 Fieldset要素 18.4 フォームの検証例 19章 クッキーとクライアントサイドの永続性 19.1 クッキーとは 19.2 クッキーの登録 19.2.1 クッキーの制限事項 19.3 クッキーの読み出し 19.4 クッキーの使用例 19.5 クッキーの代替手段 19.5.1 IEのuserData永続化機構 19.5.2 FlashのSharedObject永続化機構 19.5.3 例:永続化オブジェクト 19.6 永続化データとセキュリティ 20章 HTTPの制御 20.1 XMLHttpRequestの利用方法 20.1.1 XMLHttpRequestオブジェクトの取得 20.1.2 リクエストの送信 20.1.3 同期レスポンスの取得 20.1.4 非同期レスポンスの処理 20.1.5 XMLHttpRequestのセキュリティ 20.2 XMLHttpRequestの使用例とユーティリティ 20.2.1 基本的なテキスト取得ユーティリティ 20.2.2 ヘッダの取得 20.2.3 HTTP POST 20.2.4 HTML、XML、JSONエンコードされたレスポンス 20.2.5 リクエストのタイムアウト 20.3 Ajaxとダイナミックスクリプト 20.3.1 Ajaxの例 20.3.2 単一ページアプリケーション 20.3.3 リモートスクリプティング 20.3.4 Ajaxの注意事項 20.4 <script>タグによるHTTP制御 21章 JavaScriptとXML 21.1 XMLドキュメントの取得 21.1.1 新しいドキュメントの生成 21.1.2 ネットワークからのドキュメントのロード 21.1.3 XMLテキストの解析 21.1.4 データアイランドからのXMLドキュメントの取得 21.2 DOM APIによるXMLの操作 21.2.1 XML DOMとHTML DOM 21.2.2 例:XMLデータからのHTMLテーブルの作成 21.3 XSLTによるXMLの変換 21.4 XPathによるXMLの問い合わせ 21.4.1 XPathの例 21.4.2 XPath式の評価 21.4.3 W3C XPath APIの補足事項 21.5 XMLのシリアライズ 21.6 XMLデータによるHTMLテンプレートの展開 21.7 XMLとWebサービス 21.8 E4X:XML用のECMAScript拡張 22章 クライアントサイドグラフィックの制御 22.1 スクリプトによる画像の制御 22.1.1 画像とDOMレベル0 22.1.2 画像ロールオーバー技術 22.1.3 オフスクリーン画像とキャッシュ 22.1.4 控えめな画像ロールオーバー 22.1.5 アニメーション 22.1.6 Imageオブジェクトのそのほかのプロパティ 22.2 CSSによるグラフィック 22.2.1 CSSによる棒グラフ 22.2.2 CSSDrawingクラス 22.3 SVG 22.4 VML 22.5 <canvas>中のグラフィック 22.6 Flashによるグラフィック 22.7 Javaによるグラフィック 22.7.1 Javaによる円グラフ 22.7.2 Javaを使ったクライアントサイドでの画像描画 23章 JavaアプレットとFlashムービーの制御 23.1 アプレットの制御 23.2 Javaプラグインの制御 23.3 Javaを使ったスクリプト 23.3.1 JSObjectを使用するアプレットのコンパイルと利用 23.3.2 JavaからJavaScriptへのデータ変換 23.3.3 共通DOM API 23.4 Flashの制御 23.4.1 Flashムービーの埋め込みとアクセス 23.4.2 Flashプレーヤーの制御 23.4.3 Flashムービーの制御 23.4.4 FlashからのJavaScriptの呼び出し 23.4.5 FlashからJavaScriptを呼び出し、Flashに戻す例 23.5 Flash 8の制御 索引