Prototype JavaScript Framework は、Sam Stephenson が開発したJavaScriptフレームワークであり、Ajaxフレームワークやその他のユーティリティを提供する。prototype.js という名前の1つのJavaScriptファイルで実装されている。単独でも入手できるが、Ruby on Rails、script.aculo.us、Ricoなどのもっと大きなプロジェクトの一部にもなっている。ただし、Ruby on Railsは3.1のバージョンから、デフォルトのJavaScriptライブラリがPrototype JavaScript FrameworkからjQueryに変更されている[1]。
PrototypeはJavaScriptアプリケーション開発のための様々な機能を提供する。その機能は、プログラミング用ショートカットからXMLHttpRequestを扱う重要な関数まで様々である。
Prototypeはクラス群とクラスベースのオブジェクトのためのライブラリ関数も提供する[2]。これはJavaScript言語にはない部分である[3][4]。一般にJavaScriptでのオブジェクト生成はプロトタイプベースである。オブジェクト生成関数には prototype プロパティがあり、このプロパティを割り当てられたオブジェクトは、その関数で生成されるオブジェクトのプロトタイプとして使用される。
Prototypeの関数 Object.extend(dest, src) はパラメータに2つのオブジェクトをとり、2番目のオブジェクトのプロパティを1番目のオブジェクトにコピーすることで継承をシミュレートする。結合したオブジェクトもその関数の結果として返される。上の例のように1番目のパラメータはベースとなるオブジェクトを生成し、2番目のパラメータは無名オブジェクトとして単にプロパティを追加定義するのに使う。サブクラス宣言は全て、関数コールの括弧の中でなされる。
Object.extend(dest, src)