1. 程式人生 > >函數的原型對象和原型鏈?

函數的原型對象和原型鏈?

_屬性 proto const img 自身 實現 如果 PE 一個

函數的原型對象: 我們創建的每一個函數都有一個prototype(原型)屬性,該屬性是一個指針,該指針指向了一個對象(原型對象)。對於我們創建的構造函數,該對象中包含可以由所有實例共享的屬性和方法.

函數的原型屬性prototype指向一個原型對象,這對象中都會自動包含一個constructor(構造函數)屬性。

構造函數的原型屬性為prototype;而實例化的函數對象的屬性為 _proto_, _proto_繼承於構造函數的原型屬性。

__proto__是每個對象都有的一個屬性,而prototype是函數才會有的屬性!!!;

當調用某種方法或查找某種屬性時,首先會在自身調用和查找,如果自身並沒有該屬性或方法,則會去它的__proto__屬性中調用查找,也就是它構造函數的prototype中調用查找。所以很好理解實例繼承構造函數的方法和屬性.

原型鏈:實例對象和原型之間組成有限鏈,就是用來實現共享屬性和繼承的如:

技術分享圖片

foo3是一個實例對象,它的_proto_屬性繼承於構造函數Foo3();而構造函數Foo3()的原型屬性又是Foo2的實例,即Foo3()的原型屬性繼承於Foo2的原型屬性,同理:Foo1;.

函數的原型對象和原型鏈?