JavaScript 继承


//父类
function ClassA(sColor) {
//Define Properties
this.color = sColor;
this.drivers = new Array("Mike","John");

this.showColor = function() {
prt(this.color);
};
}

//父类
function ClassB(sName) {
this.name = sName;

this.sayName = function () {
prt(this.name);
};
}

//子类,多重继承父类 ClassA, ClassB
function ClassC(sColor, sName, sType) {
ClassA.call(this, sColor);
ClassB.call(this, sName);

this.type = sType;

this.sayType = function () {
prt(this.type);
};
}

obj = new ClassC("BLUE", "Saab", "Advanced");

obj.showColor();
obj.sayName();
obj.sayType();

Question:构造函数会为每个对象都创建独立的函数版本。事实上,每个对象应该共享同一个函数。

[b]改进版:原型链方法[/b]
function ClassA(sColor) {
this.color = sColor;

if (ClassA._initialized) return;
ClassA._initialized = true;

ClassA.prototype.sayColor = function() {
prt(this.color);
};
}

function ClassB(sColor, sName) {
ClassA.call(this, sColor);
this.name = sName;

if (ClassB._initialized) return;
ClassB._initialized = true;

prt("Init");
ClassB.prototype.sayName = function() {
prt(this.name);
};
}
ClassB.prototype = new ClassA();

var b = new ClassB("RED", "BMW");
b.sayColor(); //inherit from parent method
b.sayName();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值