首页 » 编写高质量代码:改善JavaScript程序的188个建议 » 编写高质量代码:改善JavaScript程序的188个建议全文在线阅读

《编写高质量代码:改善JavaScript程序的188个建议》建议97:推荐使用混合继承

关灯直达底部

混合继承是指把多种继承方法结合在一起使用,从而发挥各自优势,扬长避短,以实现各种复杂的应用。其中最常见的形式是把类继承与原型继承混合使用,以解决类继承中存在的问题。下面比较一下类继承、原型继承、实例继承、复制继承和克隆继承之间的不同,见表4.1。

类继承与原型继承是两种截然不同的继承模式,它们生成的对象的行为方式也是不同的。面向对象的开发人员对于类继承比较熟悉,几乎所有使用面向对象的JavaScript应用都用到了这种继承模式,但是,因为JavaScript中的类继承仅仅是对真正基于类继承的一种模仿,所以深入理解JavaScript的开发人员应该懂得原型继承的工作机制。

原型继承更能节约内存。原型链读取成员的方式使得所有克隆出来的对象都共享一个实例,只有在直接设置了某个克隆出来的对象的属性和方法时,情况才会有所变化。而在类继承方式中,创建的每一个对象在内存中都有自己的一套属性和方法副本。原型继承比类继承显得更为简单。


function A(x,y){//构造函数A

this.x=x;

this.y=y;

}

A.prototype.add=function{

return this.x+this.y;

}

function B(x,y){

A.call(this,x,y);//类继承实现

}

B.prototype=new A;//原型继承实现

var b=new B(10,20);

alert(b.x);//10

alert(b.y);//20

alert(b.add);//30


上面的示例把原型继承和类继承混用在一起,从而实现了一种比较完善的继承机制。