JavaScript: The Good Parts――「良いパーツ」によるベストプラクティス
- Douglas Crockford 著、水野 貴明 訳
- 2008年12月 発行
- 198ページ
- 定価1,890円
- ISBN978-4-87311-391-3
- 原書: JavaScript: The Good Parts
「JavaScriptは言わばひとかたまりの大理石であり、私はその中からこの言語のすばらしい本質が現れるまで、美しくない機能を取り除いていく。最終的に私が削り出すことになる美しいサブセットは、より信頼でき、読みやすく、メンテナンスがしやすく、すべてにおいて非常に優れた言語になると私は信じている。」(「1章 良いパーツ」より)――本書は、JavaScript言語の「良いパーツ」に注目し、良質なコードを書くためのポイントを示唆する書籍です。「良いパーツ」を通してJavaScriptを再評価することで、見落とされていたJavaScript言語の本質が見えてきます。
関連書籍
JavaScript & DHTMLクックブック 第2版JavaScript 第5版
Prototype & script.aculo.us
目次
訳者まえがき
はじめに
1章 良いパーツ
1.1 なぜJavaScriptなのか?
1.2 JavaScriptを解析する
1.3 プログラムをテストする簡単な方法
2章 文法
2.1 ホワイトスペース
2.2 名前
2.3 数値
2.4 文字列
2.5 命令文
2.6 式
2.7 リテラル
2.8 関数
3章 オブジェクト
3.1 オブジェクトリテラル
3.2 値の取得
3.3 値の更新
3.4 参照
3.5 プロトタイプ
3.6 リフレクション
3.7 プロパティの列挙
3.8 プロパティの削除
3.9 グローバル領域の利用を減らす
4章 関数
4.1 Functionオブジェクト
4.2 関数リテラル
4.3 関数の呼び出し
4.3.1 メソッド呼び出しパターン
4.3.2 関数呼び出しパターン
4.3.3 コンストラクタ呼び出しパターン
4.3.4 apply呼び出しパターン
4.4 引数
4.5 戻り値
4.6 例外
4.7 変数型の拡張
4.8 再帰
4.9 スコープ
4.10 クロージャ
4.11 コールバック
4.12 モジュール
4.13 カスケード
4.14 カリー化
4.15 メモ化
5章 継承
5.1 疑似クラス型
5.2 オブジェクト指定子
5.3 プロトタイプ型
5.4 関数型
5.5 オブジェクトのパーツ
6章 配列
6.1 配列リテラル
6.2 配列の長さ
6.3 要素の削除
6.4 要素の列挙
6.5 配列かどうかの判定
6.6 配列のメソッド
6.7 次元
7章 正規表現
7.1 正規表現の例
7.2 正規表現の構築
7.3 正規表現の構成要素
7.3.1 選択肢
7.3.2 正規表現シーケンス
7.3.3 正規表現因子
7.3.4 エスケープ
7.3.5 正規表現グループ
7.3.6 正規表現クラス
7.3.7 正規表現クラスにおけるエスケープ
7.3.8 数量詞
8章 メソッド
Array
array.concat( item... )
array.join( separator )
array.pop( )
array.push( item... )
array.reverse( )
array.shift( )
array.slice( start, end )
array.sort( comparefn )
array.splice( start, deleteCount, item... )
array.unshift(item...)
Function
function.apply( thisArg, argArray )
Number
number.toExponential( fractionDigits )
number.toFixed( fractionDigits )
number.toPrecision( precision )
number.toString( radix )
Object
object.hasOwnProperty( name )
RegExp
regexp.exec( string )
regexp.test( string )
String
string.charAt( pos )
string.charCodeAt( pos )
string.concat( string... )
string.indexOf( searchString, position )
string.lastIndexOf( searchString, position )
string.localeCompare( that )
string.match( regexp )
string.replace( searchValue, replaceValue )
string.search( regexp )
string.slice( start, end )
string.split( separator, limit )
string.substring( start, end )
string.toLocaleLowerCase( )
string.toLocaleUpperCase( )
string.toLowerCase( )
string.toUpperCase( )
String.fromCharCode( char... )
9章 スタイル
10章 美しい機能たち
付録A ひどいパーツ
A.1 グローバル変数
A.2 スコープ
A.3 セミコロン挿入
A.4 予約語
A.5 ユニコード
A.6 typeof
A.7 parseInt
A.8 +
A.9 浮動小数
A.10 NaN
A.11 偽の配列
A.12 Falsyな値
A.13 hasOwnProperty
A.14 オブジェクト
付録B 悪いパーツ
B.1 ==
B.2 with文
B.3 eval
B.4 continue文
B.5 switch 文での処理の継続
B.6 ブロックなしの文
B.7 ++ --
B.8. ビット演算子
B.9 function文とfunction式の比較
B.10 変数型のラッパーオブジェクト
B.11 new
B.12 void
付録C JSLint
C.1 定義されていない変数と関数
C.2 メンバ名
C.3 オプション
C.4 セミコロン
C.5 改行
C.6 コンマ
C.7 ブロックの利用の強制
C.8 許可されないブロック
C.9 式文
C.10 for in 文
C.11 switch文
C.12 var文
C.13 with文
C.14 =
C.15 == と !=
C.16 ラベル
C.17 実行されないコード
C.18 混乱を招く正負記号
C.19 ++ と --
C.20 ビット演算子
C.21 evalは邪悪である
C.22 void
C.23 正規表現
C.24 コンストラクタとnew
C.25 JSLintがしないこと
C.26 HTML
C.27 JSON
C.28 レポート
付録D 鉄道ダイアグラム
付録E JSON
E.1 JSONの文法
E.2 安全にJSONを利用する
E.3 JSONパーサ
索引
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すで修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
- P.38 Math.ceiling(2箇所あり) ↓ Math.ceil - P.131 表B-1 ------------------------ & 論理積(and) | 論理和(or) ^ 排他的論理和(xor) ~ 否定(not) >> 符号付き右シフト >>> 符号なし右シフト << 左シフト ------------------------
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すで修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
- P.10
10を乗じた数
↓
10を累乗した数
- P.13 図2-10 と P.155の図
文の順番を以下ように並べ(上から下へ)て修正。
式文
順序破壊文
try文
if文
switch文
while文
for文
do文
- P.18 表2-1
べき乗計算
↓
剰余
- P.24
stooge["first-name"] // "Joe"
↓
stooge["first-name"] // "Jerome"
- P.34
document.writeln(myObject.getValue()); // 6
↓
document.writeln(myObject.value);
- P.39
Function.prototype.method = function (name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
}
};
↓
Function.prototype.method = function (name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
return this;
}
};
- P.57
last: l,
state: s,
↓
last: l,
middle: m,
state: s,
- P.62の2つめのコード
that.get_name = function () {
return that.says() + ' ' + spec.name + ' ' + that.says();
return that;
↓
that.get_name = function () {
return that.says() + ' ' + spec.name + ' ' + that.says();
};
return that;
- P.82
new RegExp("\"(?:\\.|[^\\\\\\\"])*\"", 'g'))
↓
new RegExp("\"(?:\\\\.|[^\\\\\\\"])*\"", 'g'))
- P.82
なお正規表現リテラルで生成されたRegExpオブジェクトは
↓
なお同じ正規表現リテラルで生成されたRegExpオブジェクトは
- P.85
var doubled_words = /([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD'\-]+)\s+\1/gi;
↓
var doubled_words = /([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD]+)\s+\1/gi;
- P.104
// p is '555-555-1212'
↓
// p is '555-666-1212'
- P.122
JavaScriptはisNan関数を
↓
JavaScriptはisNaN関数を
- P.137 表C-1
glovarの行を削除
- P.157 シェークスピアの引用文中
shoulddwell
↓
should dwell
- P.162
escapee = {
'"': '"'
'\\': '\\',
'/': '/',
b: 'b',
f: '\f',
n: '\n',
r: '\r'
t: '\t'
},
↓
escapee = {
'"': '"',
'\\': '\\',
'/': '/',
b: 'b',
f: '\f',
n: '\n',
r: '\r',
t: '\t'
},
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すで修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
- P.46 6行目 alert(e) ↓ alert(i)
Catch O'Reilly
Feedback
皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]


![[View Cart]](/images/button_cart_off.gif)
ORJ on Twitter
Bookclub News
Theme![[com]](../../images/usa.gif)
![[de]](../../images/germany2.gif)
![[cn]](../../images/china2.gif)
![[tw]](../../images/taiwan2.gif)