国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript面向對象之Javascript 繼承

2024-05-06 14:10:11
字體:
來源:轉載
供稿:網友

上幾節講了 JavaScript 面向對象之命名空間 、 javascript 面向對象的JavaScript類 、 JavaScript 面向對象的之私有成員和公開成員 與 Javascript 面向對象之重載,大家可以先看上面的再繼續往下看。

在JavaScript中實現繼承可以有多種方法,下面說兩種常見的。

  一,call 繼承,先看代碼:
  先定義一個“人”類
代碼如下:
//人類
Person=function(){
this.name="草泥馬";
this.eat=function(){
alert("我要吃飯");
}
this.sleep=function(){
alert("我要睡覺");
}
}

  再定義一個學生類,讓它繼承于Person
代碼如下:
//學生類
Student=function(){
Person.call(this);//繼承Person類
this.doHomework=function(){
alert("老師來了,作業借我抄下");
}
}

  關鍵看 Person.call(this)這句,其中this代表當前對象,即Student ,這很容易理解,而Person.call(this)的意思是:將Person類的所有的公開成員“附加”給Student類,讓Student也具有了Person的所有功能。
  和高級語言一樣,如果子類中出現了和父類中同名的成員,則會將其覆蓋,也就是所謂的“重寫”了。
  同樣的,我們再定義一個女孩類 :
代碼如下:
//女孩類
Girl=function(){
Person.call(this);//繼承Person類
this.sex="女";
}

  JavaScript是可以實現多重繼承的,請看下面的Master(碩士)類,這個Master 自然是個學生,但同時又是個漂亮MM,于是有了下面的代碼:
代碼如下:
//碩士類
Master=function(){
Student.call(this);//繼承Student類
Girl.call(this);//繼承Girl類
this.degree="碩士";//學歷

}

  我們可以測試一下:
代碼如下:
var master=new Master();
master.name="鳳姐";
master.eat();
master.doHomework();
alert("偶是名字叫:"+master.name);
alert("偶的性別是:"+master.sex);

  多重繼承時要注意順序,如果兩個類中有相同名稱的成員,那么后一個將覆蓋前一個,也就是說當前類只會繼承后一個類中的成員。
  call 方法繼承就說到這,如果大家對call方法不清楚,就請去問問谷歌兄,我就不贅述了,網上轉載得不要太多。下面說下另外一種繼承方式。
  二,prototype 原型繼承:
  我們再定義一個班長類:
代碼如下:
//班長類
SquadLeader=function (){
//打招呼
this.hi=function(){
alert("同學們好,我現在是班長了");
}
}

  上面定義了一個碩士類,現在這個碩士被提升為班長了,所以這個Master要繼承SquadLeader了,這次我們用prototype 來實現,請看下面代碼:
代碼如下:
Master.prototype=new SquadLeader();//prototype 屬性指向一個對象
//或者
//Master.prototype=SquadLeader.prototype;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 阳高县| 克拉玛依市| 新津县| 汤原县| 平果县| 白玉县| 龙山县| 新民市| 常德市| 穆棱市| 洪湖市| 福海县| 泸州市| 清远市| 大渡口区| 台北县| 正宁县| 正安县| 南通市| 临沂市| 泰顺县| 平湖市| 绿春县| 资溪县| 时尚| 潜江市| 侯马市| 田阳县| 乡城县| 蓝田县| 舟山市| 金塔县| 康平县| 永嘉县| 丰县| 邹城市| 寿光市| 镇远县| 鄂尔多斯市| 新竹市| 平昌县|