1. 程式人生 > >JS中建構函式、例項物件和原型物件三者之間的關係

JS中建構函式、例項物件和原型物件三者之間的關係

1、首先需要明白一個知識點:一個需要共享並且通過例項物件呼叫的方法,是在建構函式的原型物件中的。(例項物件原型__proto__指向建構函式的原型,即prototype)

    

通過檢視join方法得到,join是在建構函式的原型物件中的。

2、進入正題,開始解釋:

(1)例項物件通過建構函式進行建立,原型物件是有了建構函式就會產生的。

(2)建構函式中的屬性通過結構(dir)檢視時不在建構函式中而是在例項物件中的,建構函式裡有個原型物件(prototype),原型物件裡有個構造器(constructor),指向建構函式。下圖檢視建構函式的結構。

(3)新增程式碼檢視例項物件的結構(上圖註釋放掉)

(4)__proto__和prototype的指向是相同的,原型物件中的方法可以被例項物件所共享。

例項物件中沒有方法,但是可以呼叫,是因為例項物件的原型__proto__指向了建構函式的原型物件(橋樑),所以可以呼叫。

(5)方法的呼叫原來是可以通過per.__proto__.eat()來呼叫,但是因為__proto__是給瀏覽器看的,並不是標準的,所以用per.eat()來呼叫。

以上屬於個人學習總結,有誤之處,還請指正。