「開眼！JavaScript」サンプルコード#1/4　第1-4章　

# はじめに

- オライリージャパン[「開眼！JavaScript」](https://www.amazon.co.jp/dp/487311621X) のサンプルコードの一覧です。
- この投稿ふくめ、全４投稿でひとまとまりになります。
- 同著、JSの基礎固めに定評ある一冊なのですが、（読んだ方はお分かりかもしれませんが、）サンプルコードが [jsfiddle](https://jsfiddle.net/) で提供され、本の紙面にそのURLが
```
http://jsfiddle.net/jseja/DD9k7
```
のように印刷されています。
- ですので、サンプルコードを見たいときに、例えば上記だと「D,D,9,k,7」とタイプしなければなりません。
- 自分が読んだときは、一度動作を確認したサンプルをまた後で見たくなったときに、このような退屈な文字タイプをしないために、URLをメモ帳に書き写しておりました。
- そのURLのリストをQiitaで共有するのが本投稿の趣旨です。
- 本投稿自体に、ＵＲＬのタイポがあったりすると用をなさなくなりますので、誤記を発見された方はコメントからお知らせ頂けるとありがたいです。可及的すみやかに修正します。
- 原著：[JavaScript Enlightenment](http://shop.oreilly.com/product/0636920027713.do) written by [Cody Lindley](http://www.codylindley.com/)

# 1章　JavaScriptオブジェクト

1.1 オブジェクトの生成

http://jsfiddle.net/jseja/DD9k7

http://jsfiddle.net/jseja/UwnX7

http://jsfiddle.net/jseja/n8RNk

http://jsfiddle.net/jseja/m6nCr

http://jsfiddle.net/jseja/qPTk9

1.2 コンストラクタ関数はオブジェクトインスタンスを構築して返す

http://jsfiddle.net/jseja/ZjL88

http://jsfiddle.net/jseja/DZ6Pv

1.3 ネイティブ/ビルトインオブジェクトのコンストラクタ

サンプルコードなし

1.4 ユーザ定義の（ネイティブではない）コンストラクタ関数

http://jsfiddle.net/jseja/qcfED

1.5 new演算子とコンストラクタ関数でインスタンス生成

http://jsfiddle.net/jseja/3QnKd

http://jsfiddle.net/jseja/Q6Rs4

1.6 リテラルを使って値を生成

http://jsfiddle.net/jseja/tMQKP

1.7 プリミティブ型（基本型）の値

http://jsfiddle.net/jseja/tZbTQ

1.8 null, undefined, 'string', 10, true, false はオブジェクトではなくプリミティブ型

http://jsfiddle.net/jseja/WLM9u

1.9 プリミティブ型はどのように保存・複製されるか

http://jsfiddle.net/jseja/aguR7

1.10 プリミティブ型は、値そのものを比較

http://jsfiddle.net/jseja/PUqbG

1.11 プリミティブ型の文字列、数値、真偽値はオブジェクトのように扱うとオブジェクトのようにふるまう

http://jsfiddle.net/jseja/TKaQD

1.12 オブジェクト（複合型の値）

http://jsfiddle.net/jseja/KAERr

1.13 オブジェクトはどのように保存・複製されるか

http://jsfiddle.net/jseja/eHgmt

1.14 オブジェクトは同値判定に参照を使用

http://jsfiddle.net/jseja/4UDYr

1.15 オブジェクトは動的なプロパティを持つ

http://jsfiddle.net/jseja/NKsPh

1.16 typeof 演算子の戻り値

http://jsfiddle.net/jseja/QsCW9

1.17 動的プロパティはミュータブル（可変）オブジェクトを可能にする

http://jsfiddle.net/jseja/tcWhb

1.18 すべてのコンストラクタのインスタンスはコンストラクタ関数にポイントするconstructorプロパティを持つ

http://jsfiddle.net/jseja/feNEK

http://jsfiddle.net/jseja/K5Ndz

http://jsfiddle.net/jseja/PXLXN

1.19 instanceof 演算子を使ってコンストラクタ関数を特定する

http://jsfiddle.net/jseja/C4bxp

1.20 インスタンスは自身のプロパティを持つことができる（インスタンスプロパティ）

http://jsfiddle.net/jseja/x7Amr

http://jsfiddle.net/jseja/h3uQs

1.21 「JavaScriptオブジェクト」と「Object()オブジェクト」の意味

サンプルコードなし

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


２．１ オブジェクトはすべての値をプロパティとして格納できる

http://jsfiddle.net/jseja/b87Ud

2.2 オブジェクトと配列でツリー構造や多次元配列を実現

http://jsfiddle.net/jseja/rzMVX

http://jsfiddle.net/jseja/HJuFe

2.3 ドット記法とブラケット記法でオブジェクトのプロパティにアクセス

http://jsfiddle.net/jseja/EBTcz

http://jsfiddle.net/jseja/EmGUq

http://jsfiddle.net/jseja/BzTNU

http://jsfiddle.net/jseja/V7YnV

2.4 delete演算子でプロパティを削除する

http://jsfiddle.net/jseja/CyEdb

2.5 プロパティへの参照はどのように解決されるのか

http://jsfiddle.net/jseja/MTApU

http://jsfiddle.net/jseja/746gx

http://jsfiddle.net/jseja/8unzr

http://jsfiddle.net/jseja/pVTw3

2.6 hasOwnProperty()を使って、プロパティがプロトタイプチェーン経由ではないことを確認

http://jsfiddle.net/jseja/Vdpmw

2.7 in演算子を使って、オブジェクトがプロパティを保持しているかどうかを確認する

http://jsfiddle.net/jseja/8EXEd

http://jsfiddle.net/jseja/Uh3ur

2.8 for-in ループを使って、プロパティを列挙する

http://jsfiddle.net/jseja/VEk5j

2.9 ホストオブジェクト

http://jsfiddle.net/jseja/KJcPt

http://jsfiddle.net/jseja/s6vBV

2.10 Underscore.js を使ってオブジェクトを拡張する

サンプルコードなし



# 3章 オブジェクト（Ｏｂｊｅｃｔ()）

3.1 Object()オブジェクト

http://jsfiddle.net/jseja/cjXax

3.2 Object()のパラメータ

http://jsfiddle.net/jseja/qvEFh

http://jsfiddle.net/jseja/YDBT9

3.3 Object()が持つプロパティとメソッド

サンプルコードなし

3.4 Object()のインスタンスのプロパティとメソッド（String.prototypeのプロパティ）

サンプルコードなし

3.5 Object()オブジェクトをオブジェクトリテラルで生成する

http://jsfiddle.net/jseja/mcAGj

http://jsfiddle.net/jseja/sCPHA

http://jsfiddle.net/jseja/besWd

3.6 すべてのオブジェクトはObject.prototypeから継承する

http://jsfiddle.net/jseja/FRhqM


# 4章　関数（Function()）

4.1 Function()オブジェクト

http://jsfiddle.net/jseja/An4Np

4.2 Function()のパラメータ

http://jsfiddle.net/jseja/V6s58

4.3 Function()が持つプロパティとメソッド

4.4 Function()のインスタンスのプロパティとメソッド（Function.prototypeのプロパティ）

4.5 関数は常に値を返す

http://jsfiddle.net/jseja/VWz78

http://jsfiddle.net/jseja/AzWVW

4.6 JavaScriptの関数は第一級関数

http://jsfiddle.net/jseja/7yTht

4.7 関数に引数を渡す

http://jsfiddle.net/jseja/ZN7xz

4.8 thisとargumentsはすべての関数本体で利用できる

http://jsfiddle.net/jseja/a5hkq

http://jsfiddle.net/jseja/6xVxm

4.9 arguments.callee

http://jsfiddle.net/jseja/7EKk9

4.10 関数インスタンスのlengthプロパティとarguments.length

http://jsfiddle.net/jseja/BCc3p

http://jsfiddle.net/jseja/29VDL

4.11 引数を再定義

http://jsfiddle.net/jseja/mq5UU

4.12 関数の実行を中断

http://jsfiddle.net/jseja/APyu9

4.13 関数の定義方法（宣言、式、もしくはコンストラクタ）

http://jsfiddle.net/jseja/vEcxt

4.14 関数の実行方法（関数、メソッド、コンストラクタ、もしくはcall()とapply()）

http://jsfiddle.net/jseja/wWYD5

4.15 無名関数

http://jsfiddle.net/jseja/PY4fU

4.16 関数式を即時実行

http://jsfiddle.net/jseja/MJBsH

4.17 無名関数を即時実行

http://jsfiddle.net/jseja/WsqgJ

4.18 関数は入れ子可能

http://jsfiddle.net/jseja/bY3L7

4.19 関数を関数に渡し、関数から関数を返す

http://jsfiddle.net/jseja/XQvuH

4.20 関数宣言を使って、定義される前に関数を実行する（関数の巻き上げ）

http://jsfiddle.net/jseja/RnGSF

4.21 関数は自身を呼ぶことができる（再帰）

http://jsfiddle.net/jseja/544JT

　

　　
* * *

次：[「開眼！JavaScript」サンプルコード#2/4　第5-8章](http://qiita.com/ykt68/items/9f67fb1de2af9a96bf8a)