1. 定义类

javascript 中定义类的方式有好几种, prototype 也提供了一种定义类的方法。

    var Shape = Class.create();

    Shape.prototype = {

       initialize:function(color){

           this.color = color;

           alert('in initialize');

       },

       draw:function(){

           alert("in draw");

           alert(this.color);

       }

    }

    var shape = new Shape('red');

shape.draw();

initialize Shape 的构造器。

2. 类继承

我们现在有一个 Circle 继承了 Shape 并增加了半径的属性。代码如下:

    var Circle = Class.create();

    Circle.prototype = Object.extend(new Shape(),{

       initialize:function(color,radius){

           alert('in Circle initialize');

           this.color = color;

           this.radius = radius;

       },

       drawCircle:function(){

           alert("in drawCircle");

           alert("color:"+this.color);

           alert("radius:"+this.radius);

       }

    })

   

    var circle = new Circle("green",10);

    circle.drawCircle();

    circle.draw();

Circle 内的 this.color 是从父类继承下来的, new Circle("green",10) 的时候父类的构造函数将首先别执行,但这时的 color 的值是 undefine ,接着执行子类的构造函数 color 将被赋值为 green”.