原型與原型鏈學(xué)習(xí)筆記

1、對象都是由函數(shù)創(chuàng)建出來的

例如:var a= new Object();var b=new Function();var c=new Array();像這些Object、Function、Array都是函數(shù)。
在實(shí)際工作中我們是這樣寫的var a={};var b=function(){};var c=[];;這兩者本質(zhì)上是沒有任何區(qū)別的,后者只是一種快捷方式,在編程語言中,一般叫做“語法糖”。

2、函數(shù)也是對象(雞生蛋還是蛋生雞的問題了)

函數(shù)也是對象,并且有一個(gè)默認(rèn)的屬性prototype。
看下圖:

Paste_Image.png

我們創(chuàng)建了一個(gè)superType函數(shù),可以看到superType.prototype也是一個(gè)對象:

superType.prototype={
    constructor:function(),
    __proto__:Object
}

這個(gè)對象有兩個(gè)屬性,其中constructor指向一個(gè)函數(shù),這個(gè)函數(shù)即是superType。

Paste_Image.png

另外一個(gè)屬性__proto__的值則是一個(gè)對象。

3、每個(gè)函數(shù)function都有一個(gè)prototype,即原型;每個(gè)對象都有一個(gè)__proto__

每個(gè)對象的__proto__都指向創(chuàng)建該對象的函數(shù)——的prototype。

一步一步來:

  1. 創(chuàng)建該對象的函數(shù):可以是Array、ObjectFucntion 或者自定義的函數(shù).
  2. 上一步函數(shù)的prototype。

4、 Object.prototype__proto__指向null

這個(gè)對象(Object.prototype)的__proto__屬性是個(gè)特例。否則的話就就無休止了。

結(jié)合上面幾點(diǎn)來理解下面這張圖片

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容