それでは、前回定義したリスト8のクラスをPrototype.js流に書き換えてみましょう(リスト9)。
リスト8:プロトタイプによる初期化(再掲)
var Human = function(name) {
this.name = name;
};
Human.prototype = {
sayMyName: function() {
alert(this.name);
}
};
var amachang = new Human('天野');
リスト9:Prototype.jsによるクラス定義
// Human クラスを定義する
var Human = Class.create();
Human.prototype = {
// コンストラクタ
initialize: function(name) {
this.name = name;
},
// メソッド
sayMyName: function() {
alert(this.name);
}
};
Prototype.jsではClass.createというメソッドを使ってクラスを生成します。そして、コンストラクタの機能はinitializeメソッドが持つようになります。
リスト8の例では、クラス定義がコンストラクタとプロトタイプに分かれていましたが、Class.createを使うことによってひとつにまとめることができます。また、関数オブジェクトによって直接クラスを定義するよりは、Class.createと書いたほうが、後から読み返したときに、これがクラスとして使われるのだということがよくわかります。
|