JavaScript 第5版

[cover photo]

本書は『JavaScript: The Definitive Guide, Fifth Edition』の日本語版です。日本語版出版にあたり、言語解説部分とリファレンス部分に分け、本書はその言語解説部分をまとめたものです。
この第5版では、JavaScript1.5に対応させるため全章の内容を更新し、XMLHTTPRequestオブジェクトでスクリプトからHTTPリクエストに送信する方法、JavaScriptを使ってXMLデータの制御、またJavaScriptによるグラフィックの制御機能についてなど、新しい話題を追加しました。
第1部ではプログラミング言語を習得するときに理解しておかなければならない基礎知識、またクロージャや名前空間など、コアJavaScriptについての知識を深める項目を学習し、第2部ではクライアントサイドJavaScriptの基本機能とHTTPの制御やJavaアプレットなど、高度なトピックの両方について解説します。
言語としてのJavaScriptについての詳しい解説はそのままに、最新のトピックを取り入れた本書はプログラマ必携の一冊です。

リファレンス部分はこちらの書籍です。
JavaScriptクイックリファレンス 第5版

関連書籍

JavaScript 第6版
JavaScriptリファレンス 第6版

訳者まえがき
はじめに

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の制御

索引

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]