JavaScriptのオブジェクト指向
JavaScriptのオブジェクト指向について
JavaScriptはれっきとしたオブジェクト指向言語です。しかし、一般的なJavaやC++、C#などの言語とは根本的に異なっています。
JavaScriptにはインスタンス化、インスタンスという概念はありますが、クラスがなくプロトタイプ(ひな形)という概念が存在しています。
簡単なクラスを定義してみる
var Person = function(){}; // クラス
var p = new Person(); // インスタンス化
コンストラクタで初期化
new演算子によってオブジェクトを生成することを想定した関数オブジェクトのことをコンストラクタと言います。
var Person = function(name, ruby){
this.name = name;
this.ruby = ruby;
this.getName = function(){
return this.name + '(' + this.ruby + ')';
}
};
var p = new Person('田中', 'タナカ'); // インスタンス化
console.log(p.getName()); // 田中(タナカ)
上記のコンストラクタで注意すべきなのは「this」キーワードです。thisはこのコンストラクタで生成されるオブジェクト自身を指します。
動的にメソッドを追加する
下記のようにgetNameメソッドを後付で定義することができます。
var Person = function(name, ruby){
this.name = name;
this.ruby = ruby;
};
var p = new Person('田中', 'タナカ'); // インスタンス化
p.getName = function(){
return this.name + '(' + this.ruby + ')';
}
console.log(p.getName()); // 田中(タナカ)