淺談javascript里一切都是對象以及原型和原型鏈

為什么說javascript里一切都是對象以及淺談原型和原型鏈

看到標題后,首先,我們需要記住這么幾句精髓的話

  1. 在javascript里一切皆為對象,指的是引用類型
    
  2. 對象是通過函數(shù)創(chuàng)建的,而函數(shù)又是另一種對象
    
  3. 每個函數(shù)都有一個prototype
    
  4. 每個對象都有一個__proto__
    

理解前面兩句話對應的論據(jù)

instanceof運算符:此運算符可以判斷一個變量是否是某個對象(類)的實例,返回值是布爾類型的

typeof運算符:此運算符可以返回一個字符串,用以說明元算數(shù)的類型,它的返回值number,boolean,string,function,object,undefined

15203291.png

后面兩句關(guān)于原型和原型鏈結(jié)合例子來理解

blob.png

從上我們可以驗證第三四句話

函數(shù)都有一個prototype,對象都有一個proto

其中,我們看到prototype對象里面包含constructor這個屬性

constructor這個玩意是指向函數(shù)本身的

另外,我們通過prototype對象可以擴展函數(shù)fn的方法

我們構(gòu)造好函數(shù),然后可以通過new創(chuàng)建對象

然后先前說了對象又都包含一個proto,而這個東西相當于一個指針,它又會指向函數(shù)fn的prototype

所以我們可以通過new fn函數(shù)創(chuàng)建多個對象后,所有這些對象都會有一個proto指向fn函數(shù)的prototype

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

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