prototype.js v1.6以降の継承

宣言が結構変わってた。
Prototype.js を使った JavaScript OOP 講座 #01 - IT戦記 が古くなってる。

方針

  • Object.extend() じゃなくて $superを使いましょう。
  • prototypeには極力触れない。prototype.jsに任せる。
Point = Class.create({
        initialize:function(x, y){
                this.x = x;
                this.y = y;
        }
});

Point3D = Class.create( Point , {
        initialize:function($super, x, y, z){
                $super(x, y);
                this.z = z;
        }
});

p = new Point3D();//new じゃないと怒られる