js原型,原型鏈

image.png

圖片來自 kzloser

  • js的三種對(duì)象,即實(shí)例對(duì)象,構(gòu)造函數(shù)對(duì)象,原型對(duì)象

  • 紅色線prototype屬性:
    普通對(duì)象沒有prototype,函數(shù)對(duì)象都有prototype。
    所以實(shí)例對(duì)象和構(gòu)造函數(shù)對(duì)象之間沒有紅線,但是構(gòu)造函數(shù)和原型對(duì)象之間有紅線。

  • 黑色線 constructor屬性:原型對(duì)象中都有個(gè)預(yù)定義的constructor對(duì)象,用來引用他的函數(shù)對(duì)象。

    F.prototype.constructor = F 
    Object.prototype.constructor = Object 
    Array.prototype.constructor = Array 
  • 藍(lán)色線 原型鏈 :js的每一個(gè)對(duì)象都有個(gè)proto內(nèi)置屬性,指向創(chuàng)建他的函數(shù)對(duì)象的原型對(duì)象。so,創(chuàng)建實(shí)例對(duì)象的函數(shù)是構(gòu)造函數(shù)對(duì)象(第二列),而他的原型就對(duì)應(yīng)各自的.prototype即原型對(duì)象(第三列)
    所有原型對(duì)象的proto 指向的都是 Object.prototype ,除了 Object.prototype 本身,它自己是指向 null ,即原型鏈終點(diǎn)是null

  • 綠色線 構(gòu)造函數(shù)產(chǎn)生的實(shí)例對(duì)象,通過new XX() 所得到的實(shí)例。

  • 紫色線 proto的由來,其實(shí)和藍(lán)色線是相同的,因?yàn)?br> 第二列構(gòu)造函數(shù)對(duì)象.prototype = 第三列原型對(duì)象


下面是另一張圖,也很好。

image.png

和原型有關(guān)的API
instanceof, 測(cè)試一個(gè)對(duì)象在其原型鏈中是否存在一個(gè)構(gòu)造函數(shù)的 prototype 屬性
object instanceof constructor
檢測(cè) constructor.prototype 是否存在于參數(shù) object 的原型鏈上
Object.getPrototypeOf(obj)得到obj的原型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、函數(shù)對(duì)象(Function)和普通對(duì)象(Object) 由function定義或Function實(shí)例化的對(duì)象為...
    Franchen閱讀 832評(píng)論 0 4
  • 原型相關(guān)的屬性也比較多,對(duì)象有”prototype”屬性,函數(shù)對(duì)象有”prototype”屬性,原型對(duì)象有”con...
    寧驥閱讀 285評(píng)論 0 0
  • 原型 簡(jiǎn)單創(chuàng)建一個(gè)構(gòu)造函數(shù)與實(shí)例: Person 構(gòu)造函數(shù)person 是 Person 的一個(gè)實(shí)例對(duì)象 inst...
    月光在心中閱讀 662評(píng)論 0 5
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 3,024評(píng)論 4 14
  • 在JavaScript中,原型鏈作為一個(gè)基礎(chǔ),老生長(zhǎng)談,今天我們就來深入的解讀一下原型鏈。 本章主要講的是下面幾點(diǎn)...
    Devinnn閱讀 1,418評(píng)論 1 6