1. 程式人生 > >javascript中呼叫被覆蓋的方法

javascript中呼叫被覆蓋的方法

先定義一個父類的建構函式:
function Rectangle(w,h){
this.width = w; //代表矩形的寬
this.height= h; //代表矩形的高
}
Rectangle.prototype.area=function(){//此定義是建構函式原型物件的一個屬性,它代表面積
return this.width * this.height;
}
Rectangle.prototype.toString=function(){//定義一個toString的原型方法
return "["+this.width+","+this.height+"]";
}

定義一個子類的建構函式來繼承父類:javascript繼承的具體介紹[url]http://han2000lei.iteye.com/blog/323506[/url]

function PositionedRectangle(x,y,w,h){
Rectangle.call(this,w,h); //使用函式的call()方法,以便初始化父類建構函式中的屬性
this.x = x;
this.y = y;
}
PositionedRectangle.prototype = new Rectangle();
delete PositionedRectangle.prototype.width;
delete PositionedRectangle.prototype.height;
PositionedRectangle.prototype.constructor = PositionedRectangle;
PositionedRectangle.prototype.toString =function(){//重寫父類中的toString方法
return "["+this.x+","+this.y+"]";
}

我們建立子類的一個例項,並呼叫子類的toString()方法
var pr = new PositionedRedtangle(2,2,8,3);
pr.toString();

上面程式碼不用解釋了,子類呼叫自己的toString()就是執行的子類下面的toString()方法。我們在進行方法重寫時,主要是為了擴充套件功能,而不是要完全覆蓋父類的方法,那麼我們如何才能呼叫父類中的這個方法呢?下面程式碼 :
PositionedRectangle.prototype.toString=function(){
return "("+this.x+","+this.y+")"+Rectangle.prototype.toString.apply(this);
}

這樣,利用apply()方法,從而呼叫到了父類的toString()方法。具體的apply()方法的作用參考我的文件[url]http://han2000lei.iteye.com/blog/324680[/url]