目 次 訳者まえがき . はじめに 1 章 JavaScript オブジェクト .. 1.1 1.2 1.4 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 オプジェクトの生成… コンストラクタ関数はオプジェクトインスタンスを構築して返す プリミテイプ型 ( 基本型 ) の値 .. リテラルを使って値を生成 .. new 演算子とコンストラクタ関数でインスタンス生成 .. ユーザ定義の ( ネイテイプではない ) コンストラクタ関数 .. … 10 ネイテイプ / ビルトインオプジェクトのコンストラクタ .. … 15 … 14 … 12 18 プリミテイプ値はどのように保存・複製されるか 17 なくプリミテイプ型 null 、 undefined 、 'stringk 10 、 true 、 false はオプジェクトでは プリミテイプ値は、値そのものを比較 .. … 19 プリミテイプ型の文字列、数値、真偽値はオプジェクトのように 扱うとオプジェクトのようにふるまう . オプジェクト ( 複合型の値 ) . オプジェクトはどのように保存・複製されるか . オプジェクトは同値判定に参照を使用 .. オプジェクトは動的なプロバティを持つ … 21 … 22 … 23 … 24 25 呼 peof 演算子の戻り値 25
目次 XVI 動的プロバティはミュータブル ( 可変 ) オプジェクトを可能に 1.17 … 27 する .. すべてのコンストラクタのインスタンスはコンストラクタ関数に 1.18 ポイントする constructor プロバティを持つ .. … 28 instanceof 演算子を使ってコンストラクタ関数を特定する .. … 30 インスタンスは自身のプロバティを持っことができる ( インスタンスプロバティ ) . … 31 「 JavaScript オプジェクト」と「 Object() オプジェクト」の意味 33 2 章 オブジェクトとプロバティを扱う . .. 35 オプジェクトはすべての値をプロバティとして格納できる .. … 35 オプジェクトと配列でツリー構造や多次元配列を実現… … 36 ドット記法とプラケット記法でオプジェクトのプロバティに アクセス .. delete 演算子でプロバティを削除する .. 2.4 2.5 プロバテイへの参照はどのように解決されるのか hasOwnPr 叩 erty() を使って、プロバティがプロトタイプ 2.6 チェーン経由ではないことを確訒 in 演算子を使って、オプジェクトがプロバティを保持している かどうかを確認する .. for - in ループを使って、プロバティを列挙する .. 2.8 ホストオプジェクト 2.9 Underscore.js を使ってオプジェクトを拡張する .. 2.10 3 章 オブジェクト (Object()).. Object() オプジェクト Object() のパラメータ Object() が持つプロバティとメソッド .. Object() のインスタンスのプロバティとメソッド (string. prototype のプロバティ ) 57 Object() オプジェクトをオプジェクトリテラルで生成する… .. 58 1.19 1.20 1.21 1 ワつひ ワ朝ワワ 8 一 -1 -1 -4 -4 45 2.7 ・ 4 4 -4 -4 5 5 6 療 5 -1 ワ朝 00 -4 っ 0 っ 0 3.5
目次ー xvii 3.6 すべてのオプジェクトは Object. prototype から継承する .. 4 章 関数 (Function( ) ) .. Function() オプジェクト . 4.1 Function() のパラメータ . 4.2 Function() が持つプロバティとメソッド . 4.3 Function ( ) のインスタンスのプロバティとメソッド 4.4 (Function. prototype のプロバティ ) 63 4.5 関数は常に値を返す… … 64 JavaScript の関数は第一級関数 .. 4.6 … 64 4.7 関数に引数を渡す .. … 66 4.8 this と arguments はすべての関数本体で利用できる . ... 66 4.9 arguments. callee.. … 67 関数インスタンスの length プロバティと arguments. length.... 68 4.10 引数を再定義… 4.11 … 68 関数の実行を中断 4.12 69 関数の定義方法 ( 宣言、式、もしくはコンストラクタ ) . 4.13 … 70 関数の実行方法 ( 関数、メソッド、コンストラクタ、もしくは 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 グローバルプロバティ、グロ … 60 -1 ワ 3 0 け 0- ワ 3 ワ 0 っ 0 -4 7
XViii ー 目次 グローバルオプジェクトにアクセスする .. 5.4 グローバルオプジェクトは暗黙的に参照される .. 5.5 ( 1 ワ 0 5 【 06 一 8 一 8 8 6 章 this . 6.1 this とは何か、および this は何を参照するか . this の値はどのように決められるのか ? . 6.2 6.3 入れ子関数内では、 this はグローバルオプジェクトを参照する 6.4 入れ子関数内で this を見失う問題をスコープチェーンを使って 回避する .. … 89 call() や叩 ply ( ) を使って this の値をコントロールする .. … 90 6.5 6.6 this キーワードをユーザ定義のコンストラクタ関数で使う .. … 91 6.7 プロトタイプメソッド内の this は生成されるインスタンスを 参照する . スコープとクロージャ .. 7 章 JavaScript のスコープ JavaScript はプロックスコープを持たない 7.2 7.3 関数内で変数を定義する際は常に var を使い、スコープの穴を 避ける .. スコープチェーン ( 静的スコープ ) .. スコープチェーンの検索は最初に発見した値を返す 99 スコープは関数実行時ではなく関数定義時に決められる .. … 100 7.6 クロージャはスコープチェーンによって生成される .. … 101 7.7 グローバルスコープで宣言されている関数もクロージャである 7.8 … 106 … 107 … 107 … 110 … 88 … 93 5 5 6 9 “ 9 、 9 … 97 … 98 7.4 7.5 ( マスキング ) 8 章 関数の prototype プロバティ . 8.1 プロトタイプチェーン .. なぜ proto Ⅳ pe プロバティが重要なのか . 8.2
目次ー prototype プロバティはすべての Function() インスタンスに XIX … 111 8.6 8.7 8.8 8.9 8.11 8.12 8.3 8.4 8.5 8.10 自動的に付与される… proto pe プロバティのデフォルト値は Object ( ) オプジェクト … 116 … 114 … 111 デフォルトの constructor プロバティを失う . proto 呼 pe プロバティに新しいオプジェクトを設定すると プロトタイプチェーンは最初に見つけたプロバティを返す… 115 プロトタイプチェーンの終着点は ()bject. prototype.. そのコンストラクタの prototype プロバティにリンクする . … 112 コンストラクタ関数から生成されたインスタンスは プロトタイプからプロバティを継承するインスタンスは常に最新 の値を取得… … 117 proto 呼 pe プロバティを新しいオプジェクトに置き換えた場合、 過去のインスタンスは更新しない . … 118 ユーザ定義コンストラクタもプロトタイプ継承を行うことが できる .. 継承チェーンを生成する .. 9 章 配列 (Array( ) ) .. 9.1 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 Array() オプジェクト Array( ) のインスタンスのプロバティとメソッド Array() のプロバティとメソッド .. 配列の要素を前から・後ろからループする .. 配列を配列に格納 ( 多次元配列 ) .. 配列の length を設定して要素の追加・削険 指定した数の要素を持った配列を生成する .. length とインデックス .. 要素の追加・変更 .. 配列を生成する .. (Array. prototype のプロバティ ) . … 119 … 121 … 1 25 125 131 … 130 … 130 ... 129 … 128 … 127 … 127 … 132 … 131
xx 一目次 1 0 章 1 1 章 1 2 章 1 3 章 String( ) .. … 1 35 … 135 10.1 10.2 10.3 10.4 String() オプジェクト .. String() で文字列オプジェクトを生成、そして値を文字列に 変換… String() のプロバティとメソッド . String() のインスタンスのプロバティとメソッド (String. prototype のプロバティ ) . Number( ) . 11.1 11.2 11.3 11.4 11.5 Number() オプジェクト .. 整数と小数… Number() に引数を渡して数値に変換 . Number() のプロバティとメソッド . Number( ) のインスタンスのプロバティとメソノト (Number. prototype のプロバティ ).. BooIean( ) . … 136 … 137 … 137 … 1 41 … 141 … 142 142 … 144 … 144 ... 147 … 147 … 147 … 148 … 148 12.1 12.2 12.3 12.4 12.5 13.1 13.2 12.6 Boolean() オプジェクト .. Boolean() のパラメータ .. B001ean() のプロバティとメソッド .. Boolean ( ) のインスタンスのプロバティとメソノト (Boolean. prototype のプロバティ ).. 真偽値オプジェクトは格納されている値が false であっても true と評価される 149 いくつかの値は false 、それ以外はすべて true に変換 .. プリミティプ型文字列、数値、真偽値 .. … 150 … 1 51 プリミテイプ値は、プロバティにアクセスされるとオプジェクト に変換される 151 文字列、数値、真偽値は常にプリミテイプ型を使う .. ... 152
1 4 章 1 5 章 1 6 章 付録 A 付録 B 索引… null.. 14.1 14.2 null.. typeof null は 'object' を返す .. undefined.. ー XXi … 1 55 … 155 … 155 … 1 57 … 157 目次 15.1 15.2 undefined .. JavaScript ECMA-262 Edition 3 以降では undefined 変数が存在 158 Math 関数 . 16.1 16.2 16.3 16.4 ビルトイン Math オプジェクト . Math が持っプロバティとメソッド . Math はコンストラクタ関数ではない . Math オプジェクトは変更・削除不可… レビュー 終わりに … 1 59 … 159 … 159 ... 161 … 161 … 1 63 … 1 67 … 1 69
ー 169 索 引 字 数 号 … 28 , 116 constructor . … 42 , 112 ... 19 … 24 , 155 .. 142 .. 142 ー proto_ Date() . decodeURI() . decodeURIComponent ( ) . delete ( 演算子 ) .. DOM … DontDelete 属性 .. 爲 -8 一 1 ・ -8 11 16 進数… 8 進数… apply() . ... 63 , 70 90 arguments.. ... 63 , 66 arguments. callee.. arguments. length.. ... 68 Array() ... 8 , 36 , 43 , 107 , 112 , 125 ~ 128 , 130 , 163 , 164 Array. prototype. concat() . ... 127 Array. prototype.join() . ... 43 , 107 , 108 , 127 Array. prototype ・ pop() . .. 128 Array. prototype. push() . ... 128 Array. prototype. reverse() .. … 128 Array. prototype. shift() . ... 128 Array. prototype. slice ( ) .. … 128 Array. prototype. sort() .. … 128 Array. prototype. splice() .. ... 128 Array. prototype. toLocaleString().. ... 127 Array. prototype. t0String ( ) .. … 127 Array. prototype. unshift() .. … 128 ... 67 enc0deURI ( ) . encodeURIComponent ( ) . eval() .. eval スコープ .. -8 一 9 、戸 0 LO for-in... Function. prototype. apply().. Function. prototype. call() .. Function. prototype. toString() .. function 文… ... 46 … 63 , 70 , 90 … 63 … 64 ... 70 , 75 hasOwnProperty() . ... 57 BooIean().. Boolean. prototype. toString ( ) . B001ean. prototype. value()f() .. … 10 , 147 ~ 149 , 163 , 164 … 149 … 149 ⅲ ( 演算子 ) .. instanceof ( 演算子 ) .. isFinite ( ) . isNaN ( ) .. isPrototypeOf() .. 一 0 -0 一ワ 3 9 、つ / -4 つけ LO 「 / に 0 call() ..
170 ー 索引 0 Object() … 3 , 4 , 33 , 35 , 36 , 55 ~ 58 , , 111 , 163 , 1 ()bject. prototype. has()wnPropertY ( ) . ()bject. prototype. isProt0typeOf() .. ()bject. prototype. propertYIsEnumerable ( ) . ()bject. prototype. t0LocaleString().. Object. prototype. t0String ( ) .. ()bject. prototype. value()f().. … 43 , 107 , 108 , 127 join() . … 159 , 161 … 160 … 160 … 160 … 18 .. 160 . 160 ... 159 ... 160 … 160 … 159 … 159 … 160 … 159 ... 159 .. 160 … 160 ... 160 … 161 … 161 ... 161 … 161 … 161 … 160 … 160 … 161 Math .. Math. abs() .. Math. acos() .. Math. asin() . Math. atan ( ) . Math. atan2() .. Math. ceil() . Math. cos() .. Math. E … Math. exp() .. Math. floor() . Math. LNIO... Math. LN2 … Math.log() .. Math. LOGIOE .. Math. LOG2E .. Math. max ( ) .. Math. min() .. Math. PI … Math. pow() . Math. random() . Math. round() .. Math. sin() . Math. sqrt() . Math. SQRT1_2... Math. SQRT2 … Math. tan() .. … 58 ... 79 parseFloat() .. parselnt() . … 69 return 文 ... … 4 , 10 , 12 , 27 , 135 ~ 137 , 163 , 1 String() .. String.fromCharCode ( ) . ... 137 String. prototype. charAt ( ) .. … 138 String.prot0type. charC0deAt ( ) .. ... 138 String. prototype. concat() . ... 138 String. prototype. index()f() .. … 138 String. prototype.lastlndex()f().. ... 138 String. prot0type.localeCompare ( ) .. … 138 String. prototype. match() .. ... 138 String. prototype. replace ( ) . … 138 String. prototype. search ( ) . ... 139 String. prototype. slice ( ) .. … 139 String. prototype. split() . ... 139 String. prototype. substr() .. … 139 String.prot0type. substring ( ) . … 139 String. prototype. t0LocaleLowerCase ( ) .. ... 139 String. prototype. t0LocaleUpperCase ( ) .. … 139 String. prototype. t0LowerCase ( ) . ... 139 String.prot0type. t0String ( ) .. … 139 String.prot0type. t0UpperCase ( ) . … 139 String. prototype. value()f() . … 140 ... 11 , 12 , 14 , 62 , 92 , 163 ... 17 , 155 , 163 ... 10 , 141 , 142 , 144 , 163 , 164 ... 144 ... 144 … 144 … 144 … 144 .. 144 ... 145 … 145 ... 145 … 145 ... 145 new ( 演算子 ).. null.. Number() . Number. MAX_. _VALUE … Number. MIN VALUE .. Number. NaN . Number. NEGATIVE INFINIIY. Number. POSITIVE INFINI"IY . Number. prototype. t0Exponential() . Number. prototype. t0Fixed ( ) .. Number. prototype. toLocaleString ( ) .. Number. prototype. toPrecision ( ) . Number. prototype. t0String ( ) . Number. prototype. value()f().. … 66 , 85 , 86 , 88 , 89 , 91 , 164 this .. typeof ( 演算子 ) .. … 25 IJ … 17 , 41 , 80 , 157 , 158 , 163 undefined .. Underscore.js ..
ー 1 71 索引 た行 第一級関数 ... 多次元配列… ツリー構造… 等値演算子 ( ー ) .. 同値演算子 ( = = = ) .. ドット記法… var ( 演算子 ) .. ... 81 … 36 , 131 ... 36 .. 19 .. 19 , 155 … 38 ... 10 , 47 , 77 、 Mindow . あ行 な行 インスタンス化 .. インスタンス .. オプジェクトリテラル .. … 9 , 15 , 118 ... 7 , 12 , 93 … 58 名前付き関数式… ネイテイブオプジェクト .. … 70 … 7 , 9 , 27 , 47 は行 か行 配列 ... 複合型 .. プラケット記法 .. プリミテイプ値・プリミテイプ型 .. プロックスコープ .. プロトタイプチェーン .. プロトタイプ継承… ホストオプジェクト… 型変換… .. 142 関数… ... 74 関数コンストラクタ .. … 70 関数宣言… … 70 関数式… … 70 関数スコープ… ... 95 関数の即時実行… … 72 , 73 クロージャ .. ... 106 , 101 グローバルオプジェクト .. ... 77 グローバル関数 . … 78 グローノヾルスコープ .. … 95 グローノヾルプロノヾティ . ... 79 グローパル変数 . … 79 継承… ... 7 , 60 , 107 , 117 , 119 , 121 高階関数 .. … 74 コンストラクタ・コンストラクタ関数 … 7 , 10 , 12 , 28 , 30 , 91 , 112 さ行 … 36 , 125 … 22 ... 38 … 15 , 151 ... 96 … 107 , 41 … 7 , 108 … 47 ま行 マスキング… ミュータブルオプジェクト ( 可変オプジェクト ) 無名関数… メソッド . … 99 ... 27 ... 72 , 73 や行 五ロ 一三ロ 約 予 ... 40 , 59 ン ~ ププ ~ コ ~ 型値一一値ス 帰照数値ココ数的 再参小数スス整静 … 75 ... 25 … 142 ... 142 … 95 … 98 … 142 … 98 ら行 ラッパーオプジェクト .. リテラル . 列挙可能 .. ローカルスコープ .. ... 3 , 15 , 21 , 151 … 14 , 61 ... 47 , 58 … 95
開眼 / JavaScript 言語仕様から学ぶ JavaScript の本質 2013 年 6 月 18 日 2013 年 11 月 26 日 著 訳 発行 者 者 人 印刷・製本 発 発 行 所 兀 初版第 1 刷発行 初版第 2 刷発行 CodyLindley ( コディ・リンドレー ) 和田祐一郎 ( わだゆういちろう ) テイム・オライリー 株式会社平河工業社 株式会社オライリー シャノヾン Fax ( 03 ) 3233-3440 TeI ( 03 ) 3233-0641 ( 代表 ) 〒 101-8460 東京都千代田区神田錦町 3-1 株式会社オーム社 電子メール j 叩an@oreilly.co.jp Fax ( 03 ) 335 5263 Tel ( 03 ) 335 5227 〒 16 0002 東京都新宿区坂町 26 番地 27 インテリジェントプラザビル IF printed ⅲ Japan ( ISBN97 & 4-87311-621-1 ) 乱丁、落丁の際はお取り替えいたします。 います。 パンから文書による許諾を得ずに、いかなる方法においても無断で複写、複製することは禁じられて 本書は著作権上の保護を受けています。本書の一部あるいは全部について、株式会社オライリー・ジャ