|
||||||||||||||||
| 前のページ 1 2 | ||||||||||||||||
| クラスの継承 | ||||||||||||||||
|
Prototype.jsではObject.extendメソッドを使うことによって、クラスの「継承」を行うことができます。Object.extendメソッドの役割は、オブジェクトのマージです。第1引数に渡されたオブジェクトに第2引数に渡されたオブジェクトのプロパティをすべてコピーするのです。では、これを使ってどのように継承を行うのでしょうか。 リスト10の例を見てください。 リスト10:クラスの継承
// Humanクラスを継承したProgrammerクラスを定義する
継承を行うには、以下の2ステップが必要になります。 まず、子プロトタイプ(子クラスのプロトタイプ)と親プロトタイプ(親クラスのプロトタイプ)をマージします。これによって、親プロトタイプのすべてのプロパティが子プロトタイプにコピーされます。 次に、新しく追加するプロパティやオーバライドするプロパティを子プロトタイプにマージします。これによって、親プロトタイプを拡張した子プロトタイプを作ることができます。 Prototype.jsでは、このように比較的簡単に継承を行うことができるのです。また、継承とはいえObject.extendを使ってプロバティをマージしているだけですので、単なるオブジェクトから継承を行うなどという荒技もできます。 |
||||||||||||||||
| Object.extendの応用 | ||||||||||||||||
|
Object.extendメソッドの代表的な使われ方は継承ですが、それ以外に使うこともできます。例えば、リスト11のようにデフォルト値に引数をマージすることで柔軟な引数を持つ関数を作ることもできます。 リスト11:デフォルト値と引数をマージ
function message(opts) {
更に、アイデア次第でさまざまな使い方ができると思います。 |
||||||||||||||||
| 次回は | ||||||||||||||||
|
次回は「関数の拡張」について解説していきます。 |
||||||||||||||||
|
前のページ 1 2 |
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||

