原型鏈

一。所有的對象都是通過New函數(shù)創(chuàng)建的:

1. 所有函數(shù)都能產(chǎn)生對象
2. 所有對象都是靠函數(shù)產(chǎn)生的

注意點:對象賦值給變量后,變量中保存的是地址,地址指向?qū)ο笏诘膬?nèi)存

注意點:函數(shù)也是一個對象,他是通過new Function創(chuàng)建的;

二。原型:

原型的本質(zhì):對象
1. 所有的“函數(shù)”都有原型屬性prototype

prototype中默認包含一個屬性:constructor,該屬性指向函數(shù)本身,也就是說:

  Person = Person.prototype.constructor;
  Person.prototype = Person.prototype.constructor.prototype;

三。隱式原型:

1. 所有的對象都有隱式原型"__proto__"屬性;

2. 隱式原型是一個對象,指向創(chuàng)建該對象的構(gòu)造函數(shù)的原型

3. 在查找對象成員時,若對象本身沒有該成員,則它會到隱式原型上去找

4. 隱式原型和原型出現(xiàn)的根本原因:JS沒有記錄類型的元數(shù)據(jù),因此,JS只能通過對象的隱式原型找到它的函數(shù)的原型,從而確定其類型

5. 每個自定義對象函數(shù)都通過自己的隱式原型找到構(gòu)造函數(shù)的原型 person.__proto__ -> Person.prototype

6. 所有函數(shù)原型的隱式原型,最終都指向Object的原型,所以稱Object是原型鏈的頂端,但是Object.prototype.__proto__ = null 

    * person.__proto__.constructor.name = Person
    
    * Person.__proto__.constructor = Function () {}
    
7. Function 的隱式原型:

    * 特殊情況:
        * Function的隱式原型指向自己
        * Object的隱式原型指向null
        
8.所有對象和函數(shù)都有toString()方法,在Object的終端原型鏈上
   //隱式原型是一個對象,指向創(chuàng)建該對象的構(gòu)造函數(shù)的對象
   function Person() {}
   var person = new Person();
   person.__proto__ === Person.prototype;//true
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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