原型鏈詳解

一、什么是原型鏈

原型鏈是javascript中用來實現(xiàn)類似類繼承的一套機制狼讨。像鏈條一樣把javascript中的對象連接起來面徽,實現(xiàn)類似子聯(lián)系父的現(xiàn)象。

二复罐、原型鏈的實現(xiàn)

未命名文件.jpg

總的來說沿侈,就是:

  • 對象的__proto__指向其構造器的prototype對象,然后該prototype對象的__proto__指向Function的prototype對象市栗,最后該prototype對象的__proto__指向Object的prototype對象缀拭。
  • 對象的prototype對象中的constructor屬性指向其構造器對象咳短,不過constructor屬性一般沒什么用,不需要考慮蛛淋。
    實際上原型鏈是通過__proto__來實現(xiàn)的咙好,因為__proto__一直指向的都是prototype對象,給人的感覺就是順著prototype對象查找的
    忽略__proto__褐荷,那么原型鏈的查找順序鏈有兩條勾效,分別是:
    • 對象——構造器原型對象——Object原型對象
    • 構造器(函數(shù))對象——Function原型對象——Object原型對象

三、一些測試

  • 對象真的沒有prototype屬性叛甫?


    未命名文件.jpg

Object對象除外

  • 對象的__proto__指向構造器的prototype對象层宫?


    未命名文件.jpg
  • 構造器的prototype對象的__proto__指向Object的prototype對象?
未命名文件.jpg

即使特殊如Function和Object對象也是如此,Object的構造器是Function

  • 函數(shù)(構造器)對象的__proto__指向Function的prototype對象其监?


    未命名文件.jpg

其實萌腿,也就是對象__proto__指向構造器的prototype對象

  • Function對象的__proto__指向其prototype對象?


    1.JPG

Function的構造器指向其prototype對象抖苦,是比較特殊的毁菱,那么是不是意味著它的構造器是其本身,這個不太清楚

四锌历、一些解釋

  • 擴充函數(shù)
  Function.prototype.method = function(){}

上面擴充的method函數(shù)對象(包括全局對象瀏覽器中為window對象)并不能訪問到贮庞,而函數(shù)可以訪問到。這是因為對象的原型鏈不經(jīng)過Function.prototype究西,而函數(shù)經(jīng)過窗慎。而Object.prototype.method=function(){}不管函數(shù)還是對象都可以訪問。

  • 擴充函數(shù)的改進
  Function.prototype.method = function(name, func){
    if(!this.prototype[name]){
      this.prototype[name] = func;
    }
    return this; 
  }
  Array.method('method', function(){
    // some code here
  });

上面代碼通過給Function的原型對象添加一個method方法卤材,用于給各函數(shù)(構造器)添加原型方法捉邢。
Array.method(‘arrayMethod’,function(){});就是給Array的原型對象添加了arrayMethod方法,那么Array構造的對象就可以訪問到這個方法商膊。不過伏伐,使用Array.arrayMethod就不能訪問這個方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末晕拆,一起剝皮案震驚了整個濱河市藐翎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌实幕,老刑警劉巖吝镣,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異昆庇,居然都是意外死亡末贾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門整吆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拱撵,“玉大人辉川,你說我怎么就攤上這事∷┎猓” “怎么了乓旗?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長集索。 經(jīng)常有香客問我屿愚,道長,這世上最難降的妖魔是什么务荆? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任妆距,我火速辦了婚禮,結果婚禮上函匕,老公的妹妹穿的比我還像新娘娱据。我一直安慰自己,他們只是感情好浦箱,可當我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布吸耿。 她就那樣靜靜地躺著祠锣,像睡著了一般酷窥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伴网,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天蓬推,我揣著相機與錄音,去河邊找鬼澡腾。 笑死沸伏,一個胖子當著我的面吹牛,可吹牛的內容都是我干的动分。 我是一名探鬼主播毅糟,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼澜公!你這毒婦竟也來了姆另?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤坟乾,失蹤者是張志新(化名)和其女友劉穎迹辐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甚侣,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡明吩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了殷费。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片印荔。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡低葫,死狀恐怖,靈堂內的尸體忽然破棺而出躏鱼,到底是詐尸還是另有隱情氮采,我是刑警寧澤,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布染苛,位于F島的核電站鹊漠,受9級特大地震影響,放射性物質發(fā)生泄漏茶行。R本人自食惡果不足惜躯概,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畔师。 院中可真熱鬧娶靡,春花似錦、人聲如沸看锉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伯铣。三九已至呻此,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腔寡,已是汗流浹背焚鲜。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留放前,地道東北人忿磅。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像凭语,于是被迫代替她去往敵國和親葱她。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內容

  • 聲明:此文為轉載文章似扔,為了自己看起來方便特此重新排版吨些,等日后看懂了再自己整理疏解,查看原文請點擊這里虫几。 正文: J...
    辭鏡朱顏閱讀 542評論 0 1
  • JS中原型鏈锤灿,說簡單也簡單。 首先明確: 函數(shù)(Function)才有prototype屬性辆脸,對象(除Object...
    前小白閱讀 3,933評論 0 9
  • 本文主要講ES5但校、ES6中類的定義、封裝和類的繼承啡氢,以及一些注意事項状囱,文中除了參考引用一些資料外术裸,也加入了很多自己...
    會飛小超人閱讀 1,126評論 1 4
  • 在JavaScript中,原型鏈作為一個基礎亭枷,老生長談袭艺,今天我們就來深入的解讀一下原型鏈。 本章主要講的是下面幾點...
    Devinnn閱讀 1,405評論 1 6
  • 剛剛告別了相處了6年的小學叨粘,6年的母校猾编,還真有點不適應呢,但是一切都要接受現(xiàn)實升敲,因為人總得要成長啊答倡,要不怎么...
    賣貓的老鼠閱讀 653評論 2 3