メメメモモ

プログラミング、筋トレ、ゲーム、etc

オブジェクト指向周辺のメモ

概要

javascriptは、配列も関数もオブジェクトです。


javascriptでいうオブジェクトは、nameとvalueペアのリストとして表されます。
nameは「文字列」で、
valueは「文字列」「数字」「boolean」「オブジェクト」になります。


valueが関数だった場合、その関数はオブジェクトのメソッドです。


オブジェクトは、コンストラクタから生成されます。

オブジェクトの定義

コンストラクタ

次のようにオブジェクトのコンストラクタを定義します。

function MyObject(param) {
   this.member = param;
}


paramという引数を受け取り、thisを用いてオブジェクトにメンバを追加しています。

prototypeを用いてメンバを追加

次のようにprototypeを用いてメンバを追加します。

MyObject.prototype.getMember = function() {
   return this.member;
};

valueに関数をセットしているので、getMemberはメソッドになります。


継承

継承にはprototypeチェーンを用いて実現します。
MyObjectを継承するときは次のようにします。

function MyChild() { }
MyChild.prototype = new MyObject();


MyChildのprototypeにまるまるMyObjectのメンバをコピーするような形になります。

オーバーライドをしたメソッドの呼び出し

オーバーライドした元のメソッドを呼び出すには、apply()関数を用います。
コンストラクタで値を受け取っている場合は、スーパークラスをapply()で呼び出します。

function MyChild(param) { 
   MyObject.apply(this,[param]); 
}
MyChild.prototype = new MyObject();

MyChild.prototype.getMember = function(param2) {
   this.param2 = param2;
   return MyObject.prototype.getMember.apply(this);
};