為什么說javascript里一切都是對象以及淺談原型和原型鏈
看到標題后,首先,我們需要記住這么幾句精髓的話
在javascript里一切皆為對象,指的是引用類型對象是通過函數(shù)創(chuàng)建的,而函數(shù)又是另一種對象每個函數(shù)都有一個prototype每個對象都有一個__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