7.2 プロトタイプとプロトタイプチェーン
前項のコンストラクタ関数では、簡単に複数のオブジェクトを生成できる反面、内部にメソッドを定義すると、インスタンスを作成するたびに同じメソッドがコピーされ、メモリを余計に消費してしまうことが分かりました。これを解決するのが、1章でも軽く触れた「プロトタイプ」です。
avaScript のすべてのオブジェクトは、自身の「見本」となるオブジェクト(プロトタイプ)を持っており、共通のメソッドをそこに持たせることでメモリ効率を高めることができます。
このように、プロトタイプは JavaScript でオブジェクトが効率よく継承するための仕組みを提供します。また、この「見本」をたどって機能を探しに行く仕組みを「プロトタイプチェーン」と呼びます。
オブジェクトは、自身のプロパティだけでなく、プロトタイプチェーンを通じて、他のオブジェクト(プロトタイプ)のプロパティやメソッドも利用できます。

しかし、プロトタイプベースの記述は独特であり、Java などの「クラスベース」の言語に慣れた開発者にとっては記述が複雑で直感的ではないという難点があります。プロトタイプを直接操作するコードは読み解くのが難しく、バグの原因になりやすい側面も否定できません。
