通過下面的例子來說明js的繼承機制。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);//調用父類的構造函數,也可以通過call方式調用
// 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也可實現面向對象的機制,關鍵看你如何應用。在設計較大規模的JS程序時,利用JS本身的特性(基于prototype的繼承),借鑒面向對象編程的方法,模擬類的定義與繼承機制,會使開發的JS程序具有更高的質量。