學習總結(jié)--JS中__proto__和prototype的關(guān)系以及原型鏈的理解

最近博主在學習原型以及原型鏈的相關(guān)內(nèi)容葫督,把高級程序設(shè)計里第六章看完之后竭鞍,感覺還是挺好理解的,于是有些飄飄然橄镜,仿佛得到了全世界

但是最近的一道刨丝欤客面試題,讓我半天摸不到頭腦洽胶,于是深受打擊的我開始痛定思痛晒夹,從網(wǎng)上搜索了相關(guān)內(nèi)容,仔細研讀了一番姊氓,這里將最近看到的相關(guān)知識點總結(jié)起來丐怯,以方便日后忘記了能夠快速回顧。

首先翔横,先插入一張經(jīng)典圖:

這張圖清晰展示了構(gòu)造函數(shù)读跷,函數(shù),對象禾唁,原型對象舔亭,以及__proto__隱式原型和prptotype顯式原型的愛恨情仇些膨,不過對于初學者來說,這張圖看起來還是有一定難度的钦铺,所以需要下面你的一些只是來做鋪墊:

首先,要明確幾個點:

1.在JS里肢预,萬物皆對象矛洞。方法(Function)是對象,方法的原型(Function.prototype)是對象烫映。因此沼本,它們都會具有對象共有的特點。即:對象具有屬性__proto__锭沟,可稱為隱式原型抽兆,一個對象的隱式原型指向構(gòu)造該對象的構(gòu)造函數(shù)的原型,這也保證了實例能夠訪問在構(gòu)造函數(shù)原型中定義的屬性和方法族淮。

2.方法(Function)方法這個特殊的對象辫红,除了和其他對象一樣有上述_proto_屬性之外,還有自己特有的屬性——原型屬性(prototype)祝辣,這個屬性是一個指針贴妻,指向一個對象,這個對象的用途就是包含所有實例共享的屬性和方法(我們把這個對象叫做原型對象)蝙斜。原型對象也有一個屬性名惩,叫做constructor,這個屬性包含了一個指針孕荠,指回原構(gòu)造函數(shù)娩鹉。

好啦,知道了這兩個基本點稚伍,我們來看看上面這副圖弯予。1.構(gòu)造函數(shù)Foo()構(gòu)造函數(shù)的原型屬性Foo.prototype指向了原型對象,在原型對象里有共有的方法槐瑞,所有構(gòu)造函數(shù)聲明的實例(這里是f1熙涤,f2)都可以共享這個方法。

3.原型對象Foo.prototypeFoo.prototype保存著實例共享的方法困檩,有一個指針constructor指回構(gòu)造函數(shù)祠挫。

4.實例f1和f2是Foo這個對象的兩個實例,這兩個對象也有屬性__proto__悼沿,指向構(gòu)造函數(shù)的原型對象等舔,這樣子就可以像上面1所說的訪問原型對象的所有方法啦。

另外:構(gòu)造函數(shù)Foo()除了是方法糟趾,也是對象啊慌植,它也有__proto__屬性甚牲,指向誰呢?指向它的構(gòu)造函數(shù)的原型對象唄蝶柿。函數(shù)的構(gòu)造函數(shù)不就是Function嘛丈钙,因此這里的__proto__指向了Function.prototype。其實除了Foo()交汤,F(xiàn)unction(), Object()也是一樣的道理雏赦。原型對象也是對象啊,它的__proto__屬性芙扎,又指向誰呢星岗?同理,指向它的構(gòu)造函數(shù)的原型對象唄戒洼。這里是Object.prototype.最后俏橘,Object.prototype的__proto__屬性指向null。

一定記兹健:原型鏈是通過__proto__屬性來連接的A绕!:憾睢曹仗!

f.constructor===F.prototype.constructor===F(紅寶書上只說了構(gòu)造函數(shù)的原型對象的constructor指向構(gòu)造函數(shù)本身,但沒有說實例對象的constructor屬性也指向構(gòu)造函數(shù)本身)蠕搜;

好的怎茫,現(xiàn)在再來看看那道難倒我的牛課題:

var?F =?function(){};

Object.prototype.a =?function(){};

Function.prototype.b =?function(){};

var?f =?new?F();

問:通過f能訪問到a或者b嗎?

答案是可以通過f取到方法a妓灌,但是取不到方法b.

訪問到方法a的方式有這么幾種:

1.f.a(因為f是構(gòu)造函數(shù)F實例化的對象轨蛤,a這個方法在對象原型上,所以f可以通過原型鏈找到a方法,即f.__proto__指向F.prototype,而F.prototype.__proto__指向Object.prototype)

2.F.a(F.__proto__指向Function.prototype虫埂,而Function.prototype.__proto__指向Object.prototype)

3.f.constructor.a(因為f.constructor就是F)

訪問到b的方式有以下幾種:

1.F.b(因為F.__proto__指向Function.prototype祥山,而Function.prototype.___proto__指向Object.prototype)

2.f.cnstructor.b(因為f.constructor就是F)

3.F.prototype.constructor.b(因為F的原型對象的constructor屬性指向構(gòu)造函數(shù)自身)

來源https://blog.csdn.net/cmz392997520/article/details/78426311

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市掉伏,隨后出現(xiàn)的幾起案子缝呕,更是在濱河造成了極大的恐慌,老刑警劉巖斧散,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件供常,死亡現(xiàn)場離奇詭異,居然都是意外死亡鸡捐,警方通過查閱死者的電腦和手機栈暇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箍镜,“玉大人源祈,你說我怎么就攤上這事煎源。” “怎么了香缺?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵手销,是天一觀的道長。 經(jīng)常有香客問我图张,道長原献,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任埂淮,我火速辦了婚禮,結(jié)果婚禮上写隶,老公的妹妹穿的比我還像新娘倔撞。我一直安慰自己,他們只是感情好慕趴,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布痪蝇。 她就那樣靜靜地躺著,像睡著了一般冕房。 火紅的嫁衣襯著肌膚如雪躏啰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天耙册,我揣著相機與錄音给僵,去河邊找鬼。 笑死详拙,一個胖子當著我的面吹牛帝际,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饶辙,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼蹲诀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弃揽?” 一聲冷哼從身側(cè)響起脯爪,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矿微,沒想到半個月后痕慢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡冷冗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年守屉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒿辙。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡拇泛,死狀恐怖滨巴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俺叭,我是刑警寧澤恭取,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站熄守,受9級特大地震影響蜈垮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裕照,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一攒发、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晋南,春花似錦惠猿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至政溃,卻和暖如春趾访,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背董虱。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工扼鞋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人空扎。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓藏鹊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親转锈。 傳聞我的和親對象是個殘疾皇子盘寡,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

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