JS中建構函式、例項物件和原型物件三者之間的關係
阿新 • • 發佈:2019-02-09
1、首先需要明白一個知識點:一個需要共享並且通過例項物件呼叫的方法,是在建構函式的原型物件中的。(例項物件原型__proto__指向建構函式的原型,即prototype)
通過檢視join方法得到,join是在建構函式的原型物件中的。
2、進入正題,開始解釋:
(1)例項物件通過建構函式進行建立,原型物件是有了建構函式就會產生的。
(2)建構函式中的屬性通過結構(dir)檢視時不在建構函式中而是在例項物件中的,建構函式裡有個原型物件(prototype),原型物件裡有個構造器(constructor),指向建構函式。下圖檢視建構函式的結構。
(3)新增程式碼檢視例項物件的結構(上圖註釋放掉)
(4)__proto__和prototype的指向是相同的,原型物件中的方法可以被例項物件所共享。
例項物件中沒有方法,但是可以呼叫,是因為例項物件的原型__proto__指向了建構函式的原型物件(橋樑),所以可以呼叫。
(5)方法的呼叫原來是可以通過per.__proto__.eat()來呼叫,但是因為__proto__是給瀏覽器看的,並不是標準的,所以用per.eat()來呼叫。
以上屬於個人學習總結,有誤之處,還請指正。