實例對象、構造函數、原型之間的關系


 實例對象、構造函數和原型之間的關系

 

 

實例對象

 

實例對象中只有__proto__屬性,所有的實例都指向自己構造函數的原型。__proto__屬性里面有構造器construction和__proto__。

構造器指向原型所屬的構造函數,__proto__屬性指向Object的原型。

實例對象里面有一個特例:

 

這個是一個特例,里面有prototype和__proto__倆個屬性,__proto__指向Function的原型,prototype是一個單純的對象,是一個Object的實例,相當於{},就是一個普通對象,里面有2個屬性,construction和__proto__,后者指向了Object的原型,construction指向了Function,即自己的構造函數。

------------------------------------------------------

構造函數

 

 

 

構造函數里面有倆個屬性__proto__和prototype屬性,原型屬性prototype本質上該屬性就是對象(Object的實例對象)。__proto__指向Function。

--------------------------------------------------------------------------------------

原型

 

 

原型里面有構造器construction和__proto__,構造器指向原型所屬的構造函數,__proto__指向Object。Object的__proto__指向null。

總結:

1、所有的函數都有Prototype屬性和__proto__屬性,實例對象沒有prototype屬性。函數才有。

2、prototype屬性本質上也是對象(實際上就是Object的實例對象--{} 或者new Object)--原型對象中也有一個__proto__屬性,並且指向Object.prototype,但是Object.prototype中沒有該屬性,指向null。

3、原型對象默認會有一個構造器construction屬性,該屬性指向原型所屬的構造函數,

4、所有的函數都是Function的實例

5、Function也是自己的實例

6、所有的實例對象中,都有一個__proto__ 屬性,該屬性指向創建該實例對象的構造函數的原型。

7、__proto__屬性不可以在編程中使用,該屬性不是標准,只能在瀏覽器自己內部使用。

8、雖然所有的函數中都有prototype和__proto__倆個屬性,但是這倆個屬性不是在所有的情況下都有用,

prototype只有在實例化之后才有價值   new Foo()

__proto_只有作為普通函數才有價值,  foo.call()

9、實例對象中也有__proto__,主要和函數中的__proto__ 做好區分,實例對象指的是自己構造函數的原型,函數中的__proto__也是指向構造函數的原型,但是特指Function的原型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM