H5-2.25原型繼承+原型鏈

一、原型繼承:

1、說起原型繼承,就要先由構(gòu)造函數(shù)創(chuàng)造對象說起棘街,首先了解構(gòu)造函數(shù)內(nèi)部基本原理:
      (1).在函數(shù)體最前面隱式的加上this = {}
     〕斜摺(2).執(zhí)行 this.xxx = xxx;
     〉疟獭(3).隱式的返回this

并且要注意隱士創(chuàng)建的this對象中有個名為proto的屬性,其屬性值為該構(gòu)造函數(shù)繼承的原型prototype炒刁。

而原型對象的有一個名為constructor的屬性,其屬性值為繼承之的構(gòu)造函數(shù)誊稚,

所以可以通過這兩個屬性相互查看

2.原型的定義及一些特點(diǎn):

定義:原型是function對象的一個屬性翔始,它定義了構(gòu)造函數(shù)制造出的對象的公共祖先。通過該構(gòu)造函數(shù)產(chǎn)生的對象里伯,可以繼承該原型的屬性和方法城瞎。原型也是對象。
   利用原型特點(diǎn)和概念疾瓮,可以提取共有屬性脖镀。

c.對象如何查看原型 — > 隱式屬性 proto

d.對象如何查看對象的構(gòu)造函數(shù) — > constructor

3、若一個構(gòu)造函數(shù)沒有指定其原型狼电,則其原型默認(rèn)為Object.prototype
且記住proto是原型鏈的一種表達(dá)方式蜒灰,
下面代碼更好展示結(jié)構(gòu)原型鏈

   A.protorype = {
    name: 'a'
}
function A() (
    this.name = 'A';
)
B.prototype = new A();
function B() {
    this.name = 'B';
}
C.prototype = new B();
function C(){
    this.name = 'C';
}
C繼承B,B繼承A肩碟,形成C->B->A的一條以原型為繼承方式的原型鏈
原型鏈結(jié)構(gòu)圖

强窖、原型鏈上屬性的增刪改查:

(1)查:優(yōu)先去實(shí)例對象上尋找是否有該屬性,若沒有削祈,則再去其對應(yīng)的原型上去尋找該屬性翅溺,若都沒有脑漫,則返回undefined

(2)增:直接給實(shí)例對象增添屬性,則僅僅在實(shí)例對象上增添屬性咙崎,若在原型上增添屬性优幸,則在原型上增添屬屬性,則在原型上增添屬性褪猛,其實(shí)例繼承原型增添的屬性网杆。

(3)刪:delete僅僅能刪除實(shí)例對象的屬性,即構(gòu)造函數(shù)原有的自己的屬性和后來實(shí)例對象增添的屬性握爷,還有關(guān)于delete的一點(diǎn)需注意跛璧,delete無法刪除原型的屬性和用var定義的變量(即非window的屬性)

(4)改:更改實(shí)例對象的屬性,則僅僅更改實(shí)例對象的屬性值新啼;更改原型的屬性值追城,則更改原型的屬性值,繼承該原型的對象對應(yīng)屬性值也會被更改;

三燥撞、對象繼承的發(fā)展:

1座柱、傳統(tǒng)模式:即正常的通過構(gòu)造函數(shù)創(chuàng)建實(shí)例對象,來繼承原型

缺點(diǎn):繼承了過多不必要的屬性

2物舒、借用其他構(gòu)造函數(shù)(即通過call / apply來改變構(gòu)造函數(shù)內(nèi)this對象的引用)

缺點(diǎn):無法繼承借用構(gòu)造函數(shù)的原型

   prototype = {
    name: 'a',
    age: 18,
    class: 1
}
function A(){
    this.name = 'A';
}
function B(){
    A.call(this);
}
var b = new B();
console.log(b.name); // A
console.log(b.age) // undefined

3色洞、共享原型:即將其他構(gòu)造函數(shù)的原型直接賦值給本構(gòu)造函數(shù)的原型

缺點(diǎn):兩個原型會想回影響,更改其中一個原型冠胯,更一個對應(yīng)的原型也會被更改火诸。

  A.prototype = {
    name: 'a',
    age: 18,
    class: 1
}
function A(){
    this.name = 'A';
}
B.prototype = A.prototype;
function B(){
    this.name = 'B';  }
C.prototype = A.prototype; function C() {   this.name = "C" }
 var a = new A();
var b = new B();
var c = new C();
console.log(a.age); // 18
console.log(b.age); //18
console.log(c.age); //18
// 原型繼承成功
B.prototype.age = 20; //更改其中一個原型的age屬性
console.log(b.age);//20
console.log(c.age); //20
// 繼承A原型的B和C相互影響

后續(xù)的還有圣杯模式,想了解的可以多去查查資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荠察,一起剝皮案震驚了整個濱河市置蜀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悉盆,老刑警劉巖盯荤,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異焕盟,居然都是意外死亡秋秤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門脚翘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灼卢,“玉大人,你說我怎么就攤上這事堰怨〗嬗瘢” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵备图,是天一觀的道長灿巧。 經(jīng)常有香客問我赶袄,道長,這世上最難降的妖魔是什么抠藕? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任饿肺,我火速辦了婚禮,結(jié)果婚禮上盾似,老公的妹妹穿的比我還像新娘敬辣。我一直安慰自己,他們只是感情好零院,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布溉跃。 她就那樣靜靜地躺著,像睡著了一般告抄。 火紅的嫁衣襯著肌膚如雪撰茎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天打洼,我揣著相機(jī)與錄音龄糊,去河邊找鬼。 笑死募疮,一個胖子當(dāng)著我的面吹牛炫惩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阿浓,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼醉鳖,長吁一口氣:“原來是場噩夢啊……” “哼普办!你這毒婦竟也來了瀑罗?” 一聲冷哼從身側(cè)響起荚醒,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤妇菱,失蹤者是張志新(化名)和其女友劉穎顶猜,沒想到半個月后屿讽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皂冰,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹊奖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年苛聘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忠聚。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡设哗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出两蟀,到底是詐尸還是另有隱情网梢,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布赂毯,位于F島的核電站战虏,受9級特大地震影響拣宰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烦感,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一巡社、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧手趣,春花似錦晌该、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至中符,卻和暖如春姜胖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舟茶。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工谭期, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吧凉。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓隧出,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阀捅。 傳聞我的和親對象是個殘疾皇子胀瞪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容