JavaScript Class Basic(クラスの基本)
JavaScriptには現時点でclassという概念がない(JavaScript2.0から使える予定)。
■メンバ
インスタンスプロパティ
インスタンス化した後のオブジェクトのプロパティ。
function Person(name){
this.name = name;
this.introduce = function(){
alert('My name is ' + this.name + '.');
};
}
var john = new Person('John');
//an instance property is john.name
インスタンスメソッド
インスタンス化した後のオブジェクトのメソッド。
function Person(name){
this.name = name;
this.introduce = function(){
alert('My name is ' + this.name + '.');
};
}
var john = new Person('John');
//an instance property is john.introduce()
但し、以下のようにprototypeによってインスタンスメソッドを定義した場合、introduce()メソッドのnameにはthisが必須となる。
var undefined;
function Person(name){
this.name = name;
}
Person.prototype.introduce = function(){
alert(this.name);
}
var john = new Person('John');
john.introduce();
クラスプロパティ
以下のようにすると、クラスプロパティが定義できる。インスタンス化されたオブジェクトからは当然アクセスできない。クラスプロパティは(クラス定数のように)慣例で全て大文字にする。
function Person(name){
this.name = name;
this.introduce = function(){
alert('My name is ' + this.name + '.');
};
}
Person.GENUS = 'genus Homo';
var john = new Person('John');
alert(john.GENUS);//none
alert(Person.GENUS);//genus Homo
クラスメソッド
クラスメソッドには以下のようなものがある。PHPで言い換えるならばstaticをつけてクラスメソッドを宣言したような感じだ。自身で定義したクラスにメソッドを付加することも可能である。
alert(Date.parse('2009/09/23 17:30:37'));//1253694637000
■プライベートメンバ
JavaやPHPではアクセス修飾詞を使用してコントロールする機能。但し、以下のようにプロパティに保持しないというだけであり、グローバル空間からインスタンス化したオブジェクトを介してnameを表示させることはできる。メリットはnameを外から変更できない事だ。
function Person(name){
this.getName = function(){return name;};
}
Person.prototype.introduce = function(){
alert(this.getName());
}
var john = new Person('John');
alert(john.getName());//John
john.introduce();//John
TrackBack URL :
Comments (0)