プロトタイプベース【prototype-based】

概要

プロトタイプベースとは、オブジェクト指向プログラミングの実装方式の一つで、クラスを定義せず、既存のオブジェクトを複製・拡張することで新しいオブジェクトを生成する方式。オブジェクトの雛形にあたる「クラス」(class)を用いる「クラスベース」と対比される概念で、SelfやJavaScriptなどの言語が採用している。
プロトタイプベースのイメージ画像

一般的なクラスベースの方式では、設計図にあたるクラスをあらかじめ定義し、そこから「インスタンス」(instance)を生成する。これに対してプロトタイプベースでは、具体的なデータと機能を持つオブジェクトそのものを原型として扱い、それを複製・継承することで別のオブジェクトを定義していく。

新しいオブジェクトを作る際は、基にしたい既存のオブジェクトを複製し、必要に応じて独自のプロパティメソッドを追加・上書きして利用する。オブジェクト間の参照関係は「プロトタイプチェーン」(prototype chain)と呼ばれる連鎖構造で管理され、自身に存在しないプロパティメソッドが参照された場合は、自動的に原型のオブジェクトを遡って探索する。

クラスという静的な定義を持たないため、実行時にオブジェクトの構造を動的に変更したり、プロパティを後から追加したりといった操作が容易である。一方、大規模な開発ではどのオブジェクトにどの機能を追加したのかプログラム把握するのが困難になりやすく、コードの見通しが悪くなる場合もある。

JavaScriptはプロトタイプベースの代表的な言語として知られる。ただし、new構文やprototypeオブジェクトなど、クラスベースと折衷したような仕様も持ち、純粋なプロトタイプベースとはやや異なるとも言われる。ECMAScript 2015以降ではclass構文が導入され、クラスベースに近い記述が可能になったが、内部の継承機構はプロトタイプベースのままである。

プロトタイプベースの考え方は1980年代に開発されたプログラミング言語「Self」で確立され、より直感的で柔軟なオブジェクト生成の手法として提唱された。その後、JavaScriptに採用されたことで注目されたものの、他の言語にはあまり広がっておらず、クラスベースのオブジェクト指向が主流のままとなっている。

(2026.6.2更新)
 

他の辞典等による「プロトタイプベース」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。