原型(prototype)、__proto__、constructor、原型鏈

_ _ proto _ _

__ proto __和constructor屬性是對象所獨有的,當構造函數創建一個實例後,該實例內部將包含一個指針,指向構造函數的原型對象(fn.protorype),這個指針就是 __ proto __.
作用:當訪問一個對象的屬性時,如果該對象內不存在這個屬性,就去它的 __ proto 屬性所指向的那個對象(父對象)裏找,一直找,直到 proto 屬性的重點爲null,然後返回undefined,再向上找就相當於再null值上找,就會報錯。通過 proto __ 屬性對象連接起來的這條鏈路就是原型鏈

原型(prototype)

prototype屬性是函數所獨有的,這個屬性是一個指針,指向一個對象。因爲函數也是一種對象,所以函數也擁有__proto__和constructor屬性。
作用: 讓該函數所實例化的對象們都可以找到公用的屬性和方法,即 f1.proto === Foo.prototype

constructor(構造函數)

constructor屬性也是對象才擁有的,指向該對象的構造函數,所有函數最終的構造函數指向都是Function.

原型鏈

當訪問一個對象的某個屬性的時候,會先在這個對象的屬性上查找,如果沒有找到,則會去它的__ proto __ 上查找,即構造函數的原型對象(構造函數.prototype),如果還沒有找到就會再在構造函數的prototype. __ proto __上查找,這樣一層一層向上查找形成的一個鏈式結構,我們稱爲 原型鏈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章