Javascript 类继承机制

Javascript本身不是面向对象的语言,但是,使用基于Prototype使得javascript具备面向对象的形。以Prototype对象来装饰存在的object,被称为“class-less, prototype-oriented, or instance-based programming”编程。

请看下面的一个简单的例子:

var BaseCar = function(config) {
        this.octaneRequired = 86;
        this.shiftTo = function(gear) {
                 this.gear = gear;
        };
        this.shiftTo('park');
};

BaseCar.prototype = { engine : 'I4', turbo : false, wheels : 'basic',
    getEngine : function() {
    return this.engine;
    },
    drive : function() {
         return 'Vrrrrooooooom - I\'m driving!';
    }
}; 
//test the BaseCar
var mySlowCar = new BaseCar(); mySlowCar.drive(); console.log(mySlowCar.getEngine());
console.log('mySlowCar contents:');
console.dir(mySlowCar);

//--------------------------
var PremiumCar = function() {             
     PremiumCar.superclass.constructor.call(this);
     this.octaneRequired = 93;
};
/*inheritance the BaseCar class*/
PremiumCar.prototype = new BaseCar();
PremiumCar.superclass = BaseCar.prototype;

PremiumCar.prototype.turbo = 'true';

PremiumCar.prototype.wheels = 'premium';
PremiumCar.prototype.drive = function() {
    this.shiftTo('drive'); PremiumCar.superclass.drive.call(this);
};
PremiumCar.prototype.getEngine = function() {
    return 'Turbo ' + this.engine;
};
//test
var myFastCar = new PremiumCar();
myFastCar.drive();
console.log('myFastCar contents:'+ PremiumCar.prototype.turbo);
console.dir(myFastCar);

定义了一个基类BaseCar类,然后定义对应的 prototype属性集合。值得指出的是prototype为一个匿名的方法对象。PrimiumCar继承BaseCar是通过
PremiumCar.superclass.constructor.call(this);

实现的。 通过constructor调用(call)基类,实现继承父类的方法和属性。为了便于理解,将代码copy到Firefox的debug控制台中运行,可以等到 我们想要的结果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值