原型與原型鏈

原型

1、在js的世界里萬物皆對象,包括普通對象(var person1=new Person)、構造函數(shù)對象(Person)、原型對象(var PP =Person.Prototype)、Function(構造函數(shù)的構造函數(shù)、所有的構造函數(shù)都是其實例、構造函數(shù)的祖宗)、Object(對象的構造函數(shù),對象的祖宗、所有的對象都是其實例)。
2、每一個對象都有一個指向該對象的構造函數(shù)的原型對象的指針[[prototype]],它在瀏覽器上的實現(xiàn)為對象的一個屬性"__proto__"(意思就是person1.__proto__==PP,Person.__proto__==Function.prototype)。
3、構造函數(shù)有且僅有構造函數(shù)才有prototype屬性,指向該構造函數(shù)的原型對象。(意思就是:Person.prototype==PP)。原型對象都有一個constructor屬性,該屬性指向該對象對應的構造函數(shù)(意思就是:PP.constructor==Person)
4、原型對象的__proto__指向Object對象的原型對象,因為所有的對象都是Object的實例(意思就是PP.__proto__==Object.prototype)
5、構造函數(shù)的__proto__指向Function的原型對象,因為所有的構造函數(shù)都是Function的實例(Person.__proto__==Function.prototype)
6、特殊情況,定義Object的原型對象的__proto__指向null,(意思就是:Object.prototype.__proto__==null)

原型鏈

查找特定屬性的時候,我們先去這個對象里去找,如果沒有的話就去它的原型對象里面去找,如果還是沒有的話再去向原型對象的原型對象里去尋找...... 直到找到Object的原型上為止,這個操作被委托在整個原型鏈上,這個就是我們說的原型鏈了。

根據(jù)以上信息可繪制一張圖,類似這樣:圖片來源

原型鏈圖片.png

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

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

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