面向對象-繼承

面向對象的繼承方式有三種:

? ? ? ?1、原型鏈實現(xiàn)繼承

//定義一個父類

function?Parent() {

this.pv="parent";

}

Parent.prototype.showParent=function() {

alert(this.pv);

}

//定義一個子類

function?Son() {

this.sv="Son";

}

//使用原型鏈來實現(xiàn)繼承

Son.prototype= new Parent();

Son.prototype.showSon=function() {

alert(this.sv);

}

var?s1= new Son();

s1.showParent();

s1.showSon();

但是這種方式存在一些問題:

1、無法從子類中調用父類的構造函數(shù)启搂, 這樣就沒有辦法把子類中屬性賦值給父類狈孔。

2岭妖、父類中屬性是在子類的原型中的箕速,這違背了我們前面所講的封裝的理念( 屬性在對

象中,方法在原型中)帖世, 會出現(xiàn)前面值的混淆問題。


? ? ? ? 2沸枯、基于偽裝實現(xiàn)繼承

//定義一個父類

function?Parent() {

this.pv="parent";

}

//定義一個子類

function?Son() {

this.sv="Son";

Parent.call(this);//注意:此時的this指的是Son的對象

//那么就是Son對象調用Parent函數(shù)

}

var?s1= new Son();

alert(s1.pv);

除了call方法外日矫,還可利用apply方法,兩者不同之處在于第二個參數(shù)绑榴,call是參數(shù)列表哪轿,而apply是參數(shù)數(shù)組。

這種方式可以解決原型鏈繼承所產生的問題翔怎,但同樣存在著其他問題:

由于使用偽造的方式繼承窃诉,子類的原型不會指向父類,所以父類中寫在原型中的方法不

會被子類繼承赤套, 所以子類調用不到父類的方法飘痛。

解決的辦法就是將父類的方法放到子類中來,但是這樣的又違背了封裝的理念容握。

? ? ? ? 3宣脉、基于組合實現(xiàn)繼承

function?Parent(name) {

this.name=name;

this.friends=["老許","老孫"];

}

Parent.prototype.parentSay=function() {

alert(this.name+"---->"+this.friends);

}

//定義一個子類

function?Son(name,age) {

this.age=age;

Parent.apply(this,[name]);

}

//使用原型鏈來實現(xiàn)繼承

Son.prototype= new Parent();

Son.prototype.sonSay=function() {

alert(this.name+"*******==="+this.age);

}

var?s1= newSon("老王",18);

s1.friends.push("老劉");

s1.parentSay();

s1.sonSay();

var?s2 = newSon("老李",28);

s2.parentSay();

s2.sonSay();

這種方法就可以同時解決以上兩個問題。



ECMAScript6—面向對象

ES6中利用class來申明類剔氏。

/**

*使用class關鍵字申明一個類脖旱,類名為Parent

*/

class?Parent {

//constructor方法就是Parent的構造方法

//可以使用它來初始化Parent類的屬性

constructor(name,age) {

this.name=name;

this.age=age;

}

//直接申明Parent類的方法,say

say() {

returnthis.name+"---->"+this.age;

}

//使用static關鍵字申明靜態(tài)方法

//注意靜態(tài)方法屬于類介蛉,而不屬于對象

static sayHello() {

alert("Hello老王");

}

}

//錯誤

//new Parent().sayHello();

//正確萌庆,該方法數(shù)據(jù)類

//Parent.sayHello();

在ES6中利用extend來實現(xiàn)繼承:

//使用extends來申明Son類繼承Parent類

class?Son extends Parent {

constructor(name,age,sex) {

//使用super關鍵字表示父類(超類)

super(name,age);

this.sex=sex;

}

sayWord() {

alert(this.sex+"----->"+this.name+"----------"+this.age);

}

//使用父類中的同名方法,會覆蓋父類方法(override)

say() {

return"哈哈";

}

}

let p1= new Son("阿里巴巴",15,"男");

//p1.sayWord();

alert(p1.say());

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末币旧,一起剝皮案震驚了整個濱河市践险,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖巍虫,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彭则,死亡現(xiàn)場離奇詭異,居然都是意外死亡占遥,警方通過查閱死者的電腦和手機俯抖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓦胎,“玉大人芬萍,你說我怎么就攤上這事∩Π。” “怎么了柬祠?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長负芋。 經常有香客問我漫蛔,道長,這世上最難降的妖魔是什么旧蛾? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任莽龟,我火速辦了婚禮,結果婚禮上锨天,老公的妹妹穿的比我還像新娘轧房。我一直安慰自己,他們只是感情好绍绘,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布奶镶。 她就那樣靜靜地躺著,像睡著了一般陪拘。 火紅的嫁衣襯著肌膚如雪厂镇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天左刽,我揣著相機與錄音捺信,去河邊找鬼。 笑死欠痴,一個胖子當著我的面吹牛迄靠,可吹牛的內容都是我干的。 我是一名探鬼主播喇辽,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼掌挚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菩咨?” 一聲冷哼從身側響起吠式,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤陡厘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后特占,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糙置,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年是目,在試婚紗的時候發(fā)現(xiàn)自己被綠了谤饭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡懊纳,死狀恐怖揉抵,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情长踊,我是刑警寧澤功舀,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布萍倡,位于F島的核電站身弊,受9級特大地震影響,放射性物質發(fā)生泄漏列敲。R本人自食惡果不足惜阱佛,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戴而。 院中可真熱鬧凑术,春花似錦、人聲如沸所意。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扶踊。三九已至泄鹏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秧耗,已是汗流浹背备籽。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留分井,地道東北人车猬。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像尺锚,于是被迫代替她去往敵國和親珠闰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

  • [TOC] 面向對象 繼承與派生 繼承 什么是繼承瘫辩?繼承是一種創(chuàng)建新的類的方式 在python中铸磅,新建的類可以繼承...
    派大星的喜悲沒人看見閱讀 303評論 0 0
  • 一赡矢、理解對象 1.創(chuàng)建 ①構造函數(shù) new Object ②對象字面量 var o = {}; 2.屬性類型 ①數(shù)...
    duJing閱讀 417評論 0 0
  • 1、函數(shù)的調用方式 既可以使用函數(shù)名+()的形式調用阅仔,也可以使用函數(shù)名+call()的形式調用吹散; 兩種調用方式的區(qū)...
    LorenaLu閱讀 236評論 0 0
  • 對繼承的理解:將共性的內容放在父類中,子類只需要關注自己特有的內容 在程序中八酒,繼承描述的是事物之間的所屬關系空民,例如...
    西多的大叔閱讀 936評論 0 0
  • 保證客人的生命和財產安全是飯店員工的基本職責,在飯店的安全管理中羞迷,消防安全管理是放在首要位置的界轩。對于火災事故我...
    vkx365閱讀 359評論 0 1