最近、jqueryに慣れまくってjavascriptでオブジェクト指向について調べようと思ったら、prototypeの継承やプロトタイプチューンについて調べて自分なりの解釈
prototypeの前にクラスについて
まずはクラスを利用するにはnew演算子でオブジェクトを生成すして下記のように実行すると思う
var First=function(name,age){
this.name=name;
this.age=age;
this.sayhello=function(){
document.write("私は"+this.name+"で年齢は"+this.age+"です
");
}
}
var o=new First("中島",20);
o.sayhello();
var o2=new First("佐藤",25);
o2.sayhello();
上記のプログラムでインスタンスを生成しているが、関数の上書きやメソッドの追加も可能で下記のようになる
~省略(上記を参照)~
var p=new parentClass("佐藤",20);
//関数を上書き
p.sayhello=function(){
document.write("俺様は"+this.name+"で年齢は"+this.age+"なんだぜ
");
}
p.sayhello();
//関数を追加する
p.saygoodby=function(){
document.write(""+this.name+"でした!ばいばい
");
}
//新たにオブジェクト作成してsaygoodbyメソッドを実行
var p2=new parentClass("鈴木",20);
p2.saygoodby(); //この関数は実行されない
という感じで追加も上書きも可能だが、最後の「p2.saygoody()」は実行されない。それはインスタンスの生成後に追加された関数はそのインスタンスのみにしか有効にならない。もちろんプロパティもそう
といった感じで簡単にクラスの説明で次からprototypeについてメモ。