6. Prototype.js でのクラスの書き方
// .js のプロトタイプ コード
var Class = {
create: function() {
return function() {
this.initialize.apply(this, argument); }
}
}
//簡略化された
function Clazz() {
return function(){
this.initialize.apply(this,arguments);
}
}
次のようにクラスを作成します。
//クラス名 person
var Person = Class.create();
//プロトタイプ書き換えによる person の定義
person.prototype = {
initialize : function (name) {
this.name = name;
},
getName : function() {
return this.name>},
setName : function (name) {
this.name = name;
}
}
//オブジェクト
var p = new Person("jack"); を作成します。 log(p.constructor == Person);//false
initialize はオブジェクト (コンストラクターに相当) の初期化を完了します。メソッドを順番に記述するだけです。
p.constructor == person という文からわかるように、これは Prototype.js の小さな欠陥です。理由は、Person のプロトタイプが書き直されたためです。コンストラクターが正しいコンストラクターを指すようにするには、プロトタイプを書き直すときにコンストラクター プロパティを維持するだけで済みます。
constructor : 人、 // ここに注意してください
initialize : function(name) {
this.name = name;
},
getName : function() {
return this.name; >},
setName : function(name) {
this.name = name;
}
}
OK、p.constructor == person は true 。