① js中關於繼承的幾種方式
1、原型鏈繼承
2、構造繼承
3、實例繼承
4、拷貝繼承
5、組合繼承
6、寄生組合繼承
② js中繼承怎麼理解,為什麼要用js繼承
js中繼承跟java中的繼承不太一樣,一般通過call()和apply()兩種方式完成,js中的繼承是以復制的形式完成的,復制一個父對象,而不像java中直接繼承父對象,還有通過原型的方式完成繼承,也有弊端,總之js中的繼承只是形式上的對面向對象語言的一種模仿,本質上不是繼承,但用起來效果是一樣的
至於為什麼要繼承:通常在一般的項目里不需要,因為應用簡單,但你要用純js做一些復雜的工具或框架系統就要用到了,比如webgis、或者js框架如jquery、ext什麼的,不然一個幾千行代碼的框架不用繼承得寫幾萬行,甚至還無法維護
③ js對象的構造和繼承實現代碼
復制代碼
代碼如下:
<script>
//定義js的user對象
function
User(name,age){
this.name=name,
this.age=age,
this.getName=function(){
return
this.name;
},
this.getAge=function(){
return
this.age;
}
}
//實例化一個對象
var
use=new
User("aa",21);
alert(use.name);
alert(use.getAge());
//js對象繼承
/*
jb51.net
在面向對象的編程方法中,對象繼承是必不可少的,那麼怎麼在javascript中實現繼承機制呢。由於javascript並不是一個嚴格的面向對象的語言,因此在對象繼承上也顯的不一樣。我們也來創建一個基類Polygon,代表一個多邊形,一個多邊形有個共同的屬性就是邊數(sides)和一個共同的方法計算面積(getAreas)。這樣我們的這具Polygon類看起來就像下面這樣定義:
*/
function
Polygon(iSides){
this.sides
=
iSides;
}
Polygon.prototype.getAreas
=
function(){
return
0;
}
/*
因為基類並不能確定面積,因此在這里我們返回為0。
接著我們就創建一個子類Triangle,一個三角形,顯然這個三角形是要從多邊形繼承的,因此我們要讓這個Triangle類繼承Polygon類,並且要覆蓋Polygon類的getAreas方法來返回三角形的面積。我們來看下在javascript中的實現:
*/
function
Triangle(iBase,
iHeight){
Polygon.call(this,3);
//在這里我們用Polygon.call()來調用Polygon的構造函數,並將3作為參數,表示這是一個三角形,因為邊是確定的,所以在子類的構造函數中就不需要指定邊了
this.base
=
iBase;
//三角形的底
this.height
=
iHeight;
//三角形的高
}
Triangle.prototype
=
new
Polygon();
Triangle.prototype.getAreas
=
function(){
return
0.5
*
this.base
*this.height;
//覆蓋基類的getAreas方法,返回三角形的面積
}
/*
參考上面的實現,我們再定義一個矩形:
*/
function
Rectangle(iWidth,
iHeight){
Polygon.call(this,4);
this.width
=
iWidth;
this.height
=
iHeight;
}
Rectangle.prototype
=
new
Polygon();
Rectangle.prototype.getAreas
=
function(){
return
this.width
*
this.height;
}
/*
好了,上面我們定義了一個基類和兩個子數,下面我們來測試一個這兩個子類是否能正常工作:
*/
var
t
=
new
Triangle(3,6);
var
r
=
new
Rectangle(4,5);
alert(t.getAreas());
//輸出9說明正確
alert(r.getAreas());
//輸出20說明正確
</script>