概要
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); };