通過下面的例子來說明js的繼承機(jī)制。js通過 function來聲明一個類,同"class".
function Circle(radius)
{
this.r = radius;
}
Circle.PI = 3.14159;
Circle.prototype.area = function(){
return Circle.PI * parseInt(this.r) * parseInt(this.r);
}
//定義ChildCircle子類
function ChildCircle(radius){
this.root=Circle;
this.root(radius);//調(diào)用父類的構(gòu)造函數(shù),也可以通過call方式調(diào)用
// Circle.call(this,radius);
}
ChildCircle.prototype=new Circle();//聲明繼承,ChildCircle繼承了Circle的所有方法
//子類覆蓋父類的方法area
ChildCircle.prototype.area = function(){
return 2 * parseInt(this.r) * parseInt(this.r);
}
var d = new ChildCircle(2);
alert(d.area());
以上是一個簡單的例子來說明javascript也可實現(xiàn)面向?qū)ο蟮臋C(jī)制,關(guān)鍵看你如何應(yīng)用。在設(shè)計較大規(guī)模的JS程序時,利用JS本身的特性(基于prototype的繼承),借鑒面向?qū)ο缶幊痰姆椒ǎM類的定義與繼承機(jī)制,會使開發(fā)的JS程序具有更高的質(zhì)量。