prototype是javascript最特别的地方之一。无论是实现javascript的面向对象还是继承,使用prototype都必不可少。
原型表示对象的原始状态,javascript中的每个对象都有一个prototype属性,但是只有function类型的prototype属性可以使用脚本直接操作。
prototype本身一个是Object类型。
prototype就是C#类中的实例方法和实例属性。
function staticClass(){};
staticClass.staticMethod = function() {alert("static method")};
staticClass.prototype.instanceMethod = function(){"instance method"};动态方法要使用prototype原型属性。
实例方法需要实例化后才能调用:var instance = new staticClass();
instance.instanceMethod();使用prototype除了可以声明实例方法,也可以声明实例属性。
动态原型方法的精髓在于使用prototype声明实例方法,使用this声明实例属性。
使用原型链实现继承
GoodCar.prototype = new Car();
var goodCar = new GoodCar();
goodCar.showColor();
实现了继承以后,还需要实现自己的run()方法,同样使用prototype实现。
function GoodCar (){}
GoodCar.prototype = new Car();
GoodCar.prototype.run = function(){alert("run fast");}
需要注意GoodCar类自身的方法一定要在实现继承语句之后定义。