JavaScript勉強会

JavaScriptの学習日記

開眼! JavaScript 【目次】

JavaScriptの学習で、「開眼! JavaScript」という本を読んでみます。

 

開眼!  JavaScript ―言語仕様から学ぶJavaScriptの本質

開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質

 

 

 

目次

訳者まえがき

はじめに

 

1章 JavaScriptオブジェクト

  1.1 オブジェクトの生成
  1.2 コンストラクタ関数はオブジェクトインスタンスを構築して返す
  1.3 ネイティブ/ビルトインオブジェクトのコンストラク
  1.4 ユーザ定義の(ネイティブではない)コンストラクタ関数
  1.5 new演算子とコンストラクタ関数でインスタンス生成
  1.6 リテラルを使って値を生成
  1.7 プリミティブ型(基本型)の値
  1.8 null、undefined、'string'、10、true、falseはオブジェクトではなくプリミティブ型
  1.9 プリミティブ値はどのように保存・複製されるか
  1.10 プリミティブ値は、値そのものを比較
  1.11 プリミティブ型の文字列、数値、真偽値はオブジェクトのように扱うとオブジェクトのようにふるまう
  1.12 オブジェクト(複合型の値)
  1.13 オブジェクトはどのように保存・複製されるか
  1.14 オブジェクトは同値判定に参照を使用
  1.15 オブジェクトは動的なプロパティを持つ
  1.16 typeof演算子の戻り値
  1.17 動的プロパティはミュータブル(可変)オブジェクトを可能にする
  1.18 すべてのコンストラクタのインスタンスはコンストラクタ関数にポイントするconstructorプロパティを持つ
  1.19 instanceof演算子を使ってコンストラクタ関数を特定する
  1.20 インスタンスは自身のプロパティを持つことができる(インスタンスプロパティ)
  1.21 「JavaScriptオブジェクト」と「Object()オブジェクト」の意味

 

2章 オブジェクトとプロパティを扱う

  2.1 オブジェクトはすべての値をプロパティとして格納できる
  2.2 オブジェクトと配列でツリー構造や多次元配列を実現
  2.3 ドット記法とブラケット記法でオブジェクトのプロパティにアクセス
  2.4 delete演算子でプロパティを削除する
  2.5 プロパティへの参照はどのように解決されるのか
  2.6 hasOwnProperty()を使って、プロパティがプロトタイプチェーン経由ではないことを確認
  2.7 in演算子を使って、オブジェクトがプロパティを保持しているかどうかを確認する
  2.8 for-inループを使って、プロパティを列挙する
  2.9 ホストオブジェクト
  2.10 Underscore.jsを使ってオブジェクトを拡張する

 

3章 オブジェクト(Object())

  3.1 Object()オブジェクト
  3.2 Object()のパラメータ
  3.3 Object()が持つプロパティとメソッド
  3.4 Object()のインスタンスのプロパティとメソッド(String.prototypeのプロパティ)
  3.5 Object()オブジェクトをオブジェクトリテラルで生成する
  3.6 すべてのオブジェクトはObject.prototypeから継承する

 

4章 関数(Function())

  4.1 Function()オブジェクト
  4.2 Function()のパラメータ
  4.3 Function()が持つプロパティとメソッド
  4.4 Function()のインスタンスのプロパティとメソッド(Function.prototypeのプロパティ)
  4.5 関数は常に値を返す
  4.6 JavaScriptの関数は第一級関数
  4.7 関数に引数を渡す
  4.8 thisとargumentsはすべての関数本体で利用できる
  4.9 arguments.callee
  4.10 関数インスタンスのlengthプロパティとarguments.length
  4.11 引数を再定義
  4.12 関数の実行を中断
  4.13 関数の定義方法(宣言、式、もしくはコンストラクタ)
  4.14 関数の実行方法(関数、メソッド、コンストラクタ、もしくはcall()とapply())
  4.15 無名関数
  4.16 関数式を即時実行
  4.17 無名関数を即時実行
  4.18 関数は入れ子可能
  4.19 関数を関数に渡し、関数から関数を返す
  4.20 関数宣言を使って、定義される前に関数を実行する(関数の巻き上げ)
  4.21 関数は自身を呼ぶ事ができる(再帰

 

5章 グローバルオブジェクト

  5.1 グローバルオブジェクト
  5.2 グローバル関数
  5.3 グローバルプロパティ、グローバル変数
  5.4 グローバルオブジェクトにアクセスする
  5.5 グローバルオブジェクトは暗黙的に参照される

 

6章 this

  6.1 thisとは何か、およびthisは何を参照するか
  6.2 thisの値はどのように決められるのか?
  6.3 入れ子関数内では、thisはグローバルオブジェクトを参照する
  6.4 入れ子関数内でthisを見失う問題をスコープチェーンを使って回避する
  6.5 call()やapply()を使ってthisの値をコントロールする
  6.6 thisキーワードをユーザ定義のコンストラクタ関数で使う
  6.7 プロトタイプメソッド内のthisは生成されるインスタンスを参照する

 

7章 スコープとクロージャ

  7.1 JavaScriptのスコープ
  7.2 JavaScriptブロックスコープを持たない
  7.3 関数内で変数を定義する際は常にvarを使い、スコープの穴を避ける
  7.4 スコープチェーン(静的スコープ)
  7.5 スコープチェーンの検索は最初に発見した値を返す(マスキング)
  7.6 スコープは関数実行時ではなく関数定義時に決められる
  7.7 クロージャはスコープチェーンによって生成される
  7.8 グローバルスコープで宣言されている関数もクロージャである

 

8章 関数のprototypeプロパティ

  8.1 プロトタイプチェーン
  8.2 なぜprototypeプロパティが重要なのか
  8.3 prototypeプロパティはすべてのFunction()インスタンスに自動的に付与される
  8.4 prototypeプロパティのデフォルト値はObject()オブジェクト
  8.5 コンストラクタ関数から生成されたインスタンスはそのコンストラクタのprototypeプロパティにリンクする
  8.6 プロトタイプチェーンの終着点はObject.prototype
  8.7 プロトタイプチェーンは最初に見つけたプロパティを返す
  8.8 prototypeプロパティに新しいオブジェクトを設定するとデフォルトのconstructorプロパティを失う
  8.9 プロトタイプからプロパティを継承するインスタンスは常に最新の値を取得
  8.10 prototypeプロパティを新しいオブジェクトに置き換えた場合、過去のインスタンスは更新しない
  8.11 ユーザ定義コンストラクタもプロトタイプ継承を行うことができる
  8.12 継承チェーンを生成する

 

9章 配列(Array())

  9.1 Array()オブジェクト
  9.2 Array() パラメータ
  9.3 Array()のプロパティとメソッド
  9.4 Array()のインスタンスのプロパティとメソッド(Array.prototypeのプロパティ)
  9.5 配列を生成する
  9.6 要素の追加・変更
  9.7 lengthとインデックス
  9.8 指定した数の要素を持った配列を生成する
  9.9 配列のlengthを設定して要素の追加・削除
  9.10 配列を配列に格納(多次元配列)
  9.11 配列の要素を前から・後ろからループする

 

10章 String()

  10.1 String()オブジェクト
  10.2 String()で文字列オブジェクトを生成、そして値を文字列に変換
  10.3 String()のプロパティとメソッド
  10.4 String()のインスタンスのプロパティとメソッド(String.prototypeのプロパティ)

 

11章 Number()

  11.1 Number()オブジェクト
  11.2 整数と小数
  11.3 Number()に引数を渡して数値に変換
  11.4 Number()のプロパティとメソッド
  11.5 Number()のインスタンスのプロパティとメソッド(Number.prototypeのプロパティ)

 

12章 Boolean()

  12.1 Boolean()オブジェクト
  12.2 Boolean()のパラメータ
  12.3 Boolean()のプロパティとメソッド
  12.4 Boolean()のインスタンスのプロパティとメソッド(Boolean.prototypeのプロパティ)
  12.5 真偽値オブジェクトは格納されている値がfalseであってもtrueと評価される
  12.6 いくつかの値はfalse、それ以外はすべてtrueに変換

 

13章 プリミティブ型文字列、数値、真偽値

  13.1 プリミティブ値は、プロパティにアクセスされるとオブジェクトに変換される
  13.2 文字列、数値、真偽値は常にプリミティブ型を使う

 

14章 null

  14.1 null
  14.2 typeof nullは'object'を返す

 

15章 undefined

  15.1 undefined
  15.2 JavaScript ECMA-262 Edition 3以降ではundefined変数が存在

 

16章 Math関数

  16.1 ビルトインMathオブジェクト
  16.2 Mathが持つプロパティとメソッド
  16.3 Mathはコンストラクタ関数ではない
  16.4 Mathオブジェクトは変更・削除不可

 

付録A レビュー

付録B 終わりに

索引

 

出版社情報

www.oreilly.co.jp

 

著者紹介

twitter.com

 

www.codylindley.com

 

英語版

本書は、英語版のPDFが公開されていました。

英語なら無料で読めます!

www.javascriptenlightenment.com