2018-09-13

prototype

prototype屬性是每一個函數(shù)都具有的屬性信夫,但它不是一個對象都具有的屬性拢驾。比如:function? Foo(){};? ? ??var foo =new Foo()蹬癌;其中Foo中有prototype屬性衙解,而foo沒有绢掰。但是foo中的隱含的__proto__屬性指向Foo.prototype佳吞。即,foo.__proto__ ===?Foo.prototype.

為什么會存在prototype屬性?

Javascript里面所有的數(shù)據(jù)類型都是對象魔眨,為了使JavaScript實現(xiàn)面向?qū)ο蟮乃枷胂蔽捅仨氁軌驅(qū)崿F(xiàn)‘繼承’使所有的對象連接起來。而如何實現(xiàn)繼承呢遏暴?JavaScript采用了類似C++侄刽,java的方式,通過new的方式來實現(xiàn)實例朋凉。

舉個例子州丹,child1,child2都是Mother的孩子,且是雙胞胎侥啤。(雖然不是很好当叭,但是還是很能說明問題的)

圖1

如果有一天,發(fā)現(xiàn)孩子的父親其實是Baba盖灸,那么就要修改每一個孩子的father屬性。

圖2

也就是說修改了其中一個孩子的father屬性不會影響到下一個磺芭,屬性的值無法共享赁炎。正是這個原因才提出來prototype屬性,把需要共享的屬性放到構(gòu)造函數(shù)也就是父類的實例中去钾腺。

__proto__

__proto__屬性是每一個對象以及函數(shù)都隱含的一個屬性徙垫。對于每一個含有__proto__屬性,他所指向的是創(chuàng)建他的構(gòu)造函數(shù)的prototype放棒。原型鏈就是通過這個屬性構(gòu)件的姻报。

想像一下,如果一個函數(shù)對象(也稱為構(gòu)造函數(shù))a的prototype是另一個函數(shù)對象b構(gòu)建出的實例间螟,a的實例就可以通過__proto__與b的原型鏈起來吴旋。而b的原型其實就是Object的實例,所以a的實例對象厢破,就可以通過原型鏈和object的prototype鏈接起來荣瑟。

圖3

如果要理清原型和原型鏈的關(guān)系,首先要明確一下幾個概念:

1.JS中的所有東西都是對象摩泪,函數(shù)也是對象, 而且是一種特殊的對象

2.JS中所有的東西都由Object衍生而來, 即所有東西原型鏈的終點指向Object.prototype

3.JS對象都有一個隱藏的__proto__屬性笆焰,他指向創(chuàng)建它的構(gòu)造函數(shù)的原型,但是有一個例外见坑,Object.prototype.__proto__指向的是null嚷掠。

4.JS中構(gòu)造函數(shù)和實例(對象)之間的微妙關(guān)系捏检。

構(gòu)造函數(shù)通過定義prototype來約定其實例的規(guī)格, 再通過 new 來構(gòu)造出實例,他們的作用就是生產(chǎn)對象。


圖4

那么Object的__proto__指向的是Function.prototype不皆,也即是:Object.__proto__ ===?Function.prototype?//true贯城。

下面再來看Function.prototype的__proto__指向哪里?因為JS中所有的東西都是對象粟焊,那么冤狡,F(xiàn)unction.prototype 也是對象,既然是對象项棠,那么Function.prototype肯定是通過Object創(chuàng)建出來的悲雳,所以,F(xiàn)unction.prototype.__proto__ ===?Object.prototype?//true

綜上所述香追,F(xiàn)unction和Object的原型以及原型鏈的關(guān)系可以歸納為下圖合瓢。

圖5

對于單個的對象實例,如果通過Object創(chuàng)建透典,var?obj =?new?Object();那么它的原型和原型鏈的關(guān)系如下圖:


圖6

如果通過函數(shù)對象來創(chuàng)建晴楔,

圖7

那JavaScript的整體的原型和原型鏈中的關(guān)系就很清晰了,如下圖所示:


圖8

轉(zhuǎn)自? https://segmentfault.com/a/1190000014717972

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末峭咒,一起剝皮案震驚了整個濱河市税弃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凑队,老刑警劉巖则果,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異漩氨,居然都是意外死亡西壮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門叫惊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來款青,“玉大人,你說我怎么就攤上這事霍狰÷詹荩” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵蚓耽,是天一觀的道長渠牲。 經(jīng)常有香客問我,道長步悠,這世上最難降的妖魔是什么签杈? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上答姥,老公的妹妹穿的比我還像新娘铣除。我一直安慰自己,他們只是感情好鹦付,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布尚粘。 她就那樣靜靜地躺著,像睡著了一般敲长。 火紅的嫁衣襯著肌膚如雪郎嫁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天祈噪,我揣著相機與錄音泽铛,去河邊找鬼。 笑死辑鲤,一個胖子當(dāng)著我的面吹牛盔腔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播月褥,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼弛随,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宁赤?” 一聲冷哼從身側(cè)響起舀透,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎决左,沒想到半個月后盐杂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡哆窿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厉斟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挚躯。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖擦秽,靈堂內(nèi)的尸體忽然破棺而出码荔,到底是詐尸還是另有隱情,我是刑警寧澤感挥,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布缩搅,位于F島的核電站,受9級特大地震影響触幼,放射性物質(zhì)發(fā)生泄漏硼瓣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堂鲤。 院中可真熱鬧亿傅,春花似錦、人聲如沸瘟栖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽半哟。三九已至酬滤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寓涨,已是汗流浹背盯串。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缅茉,地道東北人嘴脾。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蔬墩,于是被迫代替她去往敵國和親译打。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

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

  • JS中原型鏈拇颅,說簡單也簡單奏司。 首先明確: 函數(shù)(Function)才有prototype屬性,對象(除Object...
    前小白閱讀 3,928評論 0 9
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,124評論 0 21
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持樟插,譯者再次奉上一點點福利:阿里云產(chǎn)品券韵洋,享受所有官網(wǎng)優(yōu)惠,并抽取幸運大...
    HetfieldJoe閱讀 2,997評論 4 14
  • 故事如此平淡如水黄锤,有些就像是發(fā)生在隔壁老王或者你自己家里搪缨。都不是多大的事。如果發(fā)生在你身上鸵熟,在現(xiàn)實生活中副编,你或許也...
    喬丁閱讀 783評論 0 0
  • #健康·身體# 1. 本周早起5:30前1次,早睡22:30前0次流强,晚上睡覺時間不規(guī)律痹届,午睡3次,平均睡眠5小時4...
    馬凈1887閱讀 245評論 0 0