javascript中呼叫被覆蓋的方法
阿新 • • 發佈:2019-01-09
先定義一個父類的建構函式:
定義一個子類的建構函式來繼承父類:javascript繼承的具體介紹[url]http://han2000lei.iteye.com/blog/323506[/url]
我們建立子類的一個例項,並呼叫子類的toString()方法
上面程式碼不用解釋了,子類呼叫自己的toString()就是執行的子類下面的toString()方法。我們在進行方法重寫時,主要是為了擴充套件功能,而不是要完全覆蓋父類的方法,那麼我們如何才能呼叫父類中的這個方法呢?下面程式碼 :
這樣,利用apply()方法,從而呼叫到了父類的toString()方法。具體的apply()方法的作用參考我的文件[url]http://han2000lei.iteye.com/blog/324680[/url]
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]