關(guān)于原型鏈的相關(guān)整理

首先要記撞看铡:
①:__proto__constructor是對象獨(dú)有的祷嘶;
②:prototype 是函數(shù)獨(dú)有的;
③: 函數(shù) 也是對象绳姨;
④:實(shí)例對象的 __proto__ 就是構(gòu)造該實(shí)例對象的 構(gòu)造函數(shù) 的原型(prototype)愈诚;
原型(prototype)也是對象她按,它也有 __proto__;

1. 原型鏈?zhǔn)鞘裁?/h6>

簡單理解來就是:
當(dāng)訪問對象上的一個(gè)屬性時(shí)牛隅,該對象上不存在就會向它的 __proto__ 上去查找,如果它的 __proto__ 上不存在尤溜,就會向 __proto____proto__ 上去找倔叼,如此反復(fù)向上查找,直到頂端 null宫莱,如此形成一條鏈丈攒,這條鏈就叫 原型鏈

2. __proto__prototype 關(guān)系

__proto__:是實(shí)例對象上的 一個(gè)屬性 (姑且稱為隱式原型)
prototype:叫原型授霸,是一個(gè)對象巡验,它是構(gòu)造某個(gè) 實(shí)例對象的 構(gòu)造函數(shù) 的原型。

__proto__ 是構(gòu)造該 實(shí)例對象 的 構(gòu)造函數(shù) 的原型(prototype)

下面參照例子都是簡單列出幾項(xiàng)對比:

// prototype 是一個(gè)對象
typeof Object.prototype // 結(jié)果:'object'
typeof Array.prototype // 結(jié)果:'object'
typeof Function.prototype // 結(jié)果:'object'
typeof Number.prototype // 結(jié)果:'object'
// ···
// ···
{}.__proto__ === Object.prototype // 結(jié)果為 true
[].__proto__ === Array.prototype // 結(jié)果為 true
let num = 123
num.__proto__ === Number.prototype // 結(jié)果為 true
function fun() {}
fun.__proto__ === Function.prototype // 結(jié)果為 true
3. __proto__

原型鏈的極致就是 null

// prototype 是一個(gè)對象碘耳,是對象就有 __proto__ 屬性
{}.__proto__ === Object.prototype
Object.prototype.__proto__ === null // 結(jié)果 true

// ---
// prototype 是一個(gè)對象显设,是對象就有 __proto__ 屬性
[].__proto__ === Array.prototype
Array.prototype.__proto__ === Object.prototype // 結(jié)果 true
Object.prototype.__proto__ === null // 結(jié)果 true

// ---
let num = 123
num.__proto__ === Number.prototype
Number.prototype.__proto__ === Object.prototype // 結(jié)果 true
Object.prototype.__proto__ === null // 結(jié)果 true

// ---
function fun() {}
fun.__proto__ === Function.prototype
Function.prototype.__proto__ === Object.prototype // 結(jié)果 true
Object.prototype.__proto__ === null // 結(jié)果 true
4. 原型prototype

Object,Array辛辨,Number捕捂,F(xiàn)unction 都是 函數(shù),構(gòu)造函數(shù)是一種特殊的 函數(shù)

函數(shù)上有原型斗搞,constructor指攒,等一些列定義的屬性方法。
Function 構(gòu)造函數(shù)的 原型(prototype)是所有函數(shù)的 __proto__

// Object僻焚,Array允悦,Number,F(xiàn)unction 等都是 構(gòu)造函數(shù)虑啤,函數(shù)也是對象隙弛,是對象就有 __proto__;
// __proto__ 是構(gòu)造 某實(shí)例對象 的 構(gòu)造函數(shù) 的原型
Object.__proto__ === Function.prototype
Array.__proto__ === Function.prototype
Number.__proto__ === Function.prototype

// Function 是一個(gè)構(gòu)造函數(shù),構(gòu)造函數(shù)是一種特殊的函數(shù)狞山。
// Function 構(gòu)造函數(shù)的 原型(prototype)是所有函數(shù)的 __proto__全闷,因此
Function.__proto__ === Function.prototype

// 下面這個(gè)不要跟上面的理解混了
Function.prototype.__proto__ === Object.prototype 

5.constructor

constructor 指向該對象的構(gòu)造函數(shù)。每個(gè)對象上都有構(gòu)造函數(shù)(有的 本身擁有铣墨,有的通過繼承而來室埋,繼承的需通過 .proto 來表現(xiàn))。

function Fun() {}
let ff = new Fun

ff.constructor === Fun // true伊约; ff 的 constructor 通過繼承而來
Fun.prototype.constructor === Fun // true
// 即
ff.__proto__.constructor === Fun //true

Fun.constructor === Function // true;Fun 的 constructor 通過繼承而來
Function.prototype.constructor === Function // true

Object.prototype.constructor === Object // true
Object.constructor === Function // true孕蝉;Object 的 constructor 通過繼承而來

所有的 函數(shù) 和 對象屡律,最終都是由構(gòu)造函數(shù) Function 構(gòu)造而來,所以 constructor 的終點(diǎn)就是 Function降淮。

如果超埋,從頭理解下來的話搏讶,理論上啊,我只是說理論上應(yīng)該就懂了這個(gè)關(guān)系了霍殴。
一定要多輸出查看

以上皆為個(gè)人整理媒惕,如有錯(cuò)誤,請指正来庭,謝謝 ??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妒蔚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子月弛,更是在濱河造成了極大的恐慌肴盏,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帽衙,死亡現(xiàn)場離奇詭異菜皂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)厉萝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門恍飘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谴垫,你說我怎么就攤上這事章母。” “怎么了弹渔?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵胳施,是天一觀的道長。 經(jīng)常有香客問我肢专,道長舞肆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任博杖,我火速辦了婚禮椿胯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剃根。我一直安慰自己哩盲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布狈醉。 她就那樣靜靜地躺著廉油,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苗傅。 梳的紋絲不亂的頭發(fā)上抒线,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音渣慕,去河邊找鬼嘶炭。 笑死抱慌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的眨猎。 我是一名探鬼主播抑进,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼睡陪!你這毒婦竟也來了寺渗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宝穗,失蹤者是張志新(化名)和其女友劉穎户秤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逮矛,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸡号,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了须鼎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲸伴。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晋控,靈堂內(nèi)的尸體忽然破棺而出汞窗,到底是詐尸還是另有隱情,我是刑警寧澤赡译,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布仲吏,位于F島的核電站,受9級特大地震影響蝌焚,放射性物質(zhì)發(fā)生泄漏裹唆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一只洒、第九天 我趴在偏房一處隱蔽的房頂上張望许帐。 院中可真熱鬧,春花似錦毕谴、人聲如沸成畦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽循帐。三九已至,卻和暖如春舀武,著一層夾襖步出監(jiān)牢的瞬間惧浴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工奕剃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衷旅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓纵朋,卻偏偏與公主長得像柿顶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子操软,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354