prototype和_proto_的關(guān)系

首先另患,我沒需要了解清楚一下知識:
1.在js中囊陡,萬物皆對象芳绩,方法(Function)是對象,方法的原型Function.prototype也是對象撞反,所以他們都會擁有對象共有的特點proto妥色,可以稱之為隱式類型,一個對象的隱式類型指向構(gòu)造該對象的構(gòu)造函數(shù)的原型遏片,這也保證了實例能夠訪問在構(gòu)造函數(shù)原型中定義的方法和屬性
2.方法(Function)是一個特殊的對象嘹害,除了和其它對象一樣,都擁有proto的隱式屬性吮便,還有自己的特殊屬性原型屬性(prototype)笔呀,這是屬性是一個指針,指向一個對象髓需,指向的這個對象包含有所有實例共享的屬性和方法许师,這個對象就是原型對象。原型對象也有一個屬性僚匆,叫做constructor微渠,這個屬性也有一個指針,指向原構(gòu)造函數(shù)咧擂。
接下來逞盆,分別了解prototype和proto是什么:
1.prototype:每一個函數(shù)在創(chuàng)建之后,都會有一個prototype的屬性松申,指向構(gòu)造函數(shù)的原型對象云芦,用于訪問函數(shù)的原型對象。
1.proto:js中的任意對象都有一個內(nèi)置屬性[[prototype]]贸桶,es5之前沒有標(biāo)準(zhǔn)方法訪問此屬性舅逸,但是大部分瀏覽器都是用proto來訪問,ed5中有了對于這個內(nèi)置屬性標(biāo)準(zhǔn)的Get方法Object.getPrototypeOf()刨啸。(用于訪問對象實例的原型對象)
代碼示例:

function Test(){}
const test = new Test()
test._proto_ === Test.prototype //true  

test的proto指向它的實例的原型對象堡赔,后者也是指向它的原型對象,構(gòu)造函數(shù)擁有prototype屬性设联,對象實例擁有proto屬性善已,它們都是用來訪問實例對象的。
函數(shù)有點特別离例,它不僅是個函數(shù)换团,還是個對象。所以它也有proto屬性宫蛆。
那么艘包,為什么會是這樣呢的猛?
因為函數(shù)是內(nèi)置構(gòu)造函數(shù)Function的實例

const test = new Function("function Test(){}")
test._proto_ === Function.prototype //true

所以函數(shù)也可以通過proto訪問它的對象。
由于prototype也是一個對象想虎,所以它也可以通過proto去訪問它的原型對象卦尊,對象的原型對象是Object.prototype

function Test(){}
Test.prototypr._proto_ === Object.prototype //true

換個角度看,其實Object其實也是一個內(nèi)置函數(shù)

const obj = new Object()
obj._proto_ === Object.prototype

為了防止無休止循環(huán)下去舌厨,所以O(shè)bject.proto指向null岂却,所以使用Object.create(null)創(chuàng)建的對象是沒有proto屬性的,也沒有prototype的屬性裙椭。

總結(jié)

prototype是構(gòu)造函數(shù)才有的躏哩,它指向的是當(dāng)前對象的原型對象,也成為顯示原型揉燃,用來實現(xiàn)原型的繼承以及屬性的共享扫尺。
所有的對象都有proto,構(gòu)造函數(shù)實例化對象的proto的指向與構(gòu)造函數(shù)prototype指向相同炊汤,也成為隱式原型正驻,構(gòu)成原型鏈。
在原型鏈中抢腐,我沒尋找obj中的x屬性拨拓,如果在自身沒有找到此屬性的話,就會向上尋找一直尋找到Object,prototype.proto的終點氓栈。
Object.create(null)創(chuàng)建對象沒有proto
方法是個特殊的對象,不僅有屬性proto還有屬性prototype婿着,prototype指向方法的原型對象授瘦。
經(jīng)典原型圖:

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市竟宋,隨后出現(xiàn)的幾起案子提完,更是在濱河造成了極大的恐慌,老刑警劉巖丘侠,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徒欣,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜗字,警方通過查閱死者的電腦和手機(jī)打肝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挪捕,“玉大人粗梭,你說我怎么就攤上這事〖读悖” “怎么了断医?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我鉴嗤,道長斩启,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任醉锅,我火速辦了婚禮兔簇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荣挨。我一直安慰自己男韧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布默垄。 她就那樣靜靜地躺著此虑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪口锭。 梳的紋絲不亂的頭發(fā)上朦前,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音鹃操,去河邊找鬼韭寸。 笑死,一個胖子當(dāng)著我的面吹牛荆隘,可吹牛的內(nèi)容都是我干的恩伺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼椰拒,長吁一口氣:“原來是場噩夢啊……” “哼晶渠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起燃观,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤褒脯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缆毁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體番川,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年脊框,在試婚紗的時候發(fā)現(xiàn)自己被綠了颁督。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡浇雹,死狀恐怖适篙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箫爷,我是刑警寧澤嚷节,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布聂儒,位于F島的核電站,受9級特大地震影響硫痰,放射性物質(zhì)發(fā)生泄漏衩婚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一效斑、第九天 我趴在偏房一處隱蔽的房頂上張望非春。 院中可真熱鬧,春花似錦缓屠、人聲如沸奇昙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽储耐。三九已至,卻和暖如春滨溉,著一層夾襖步出監(jiān)牢的瞬間什湘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工晦攒, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留闽撤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓脯颜,卻偏偏與公主長得像哟旗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子栋操,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

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