構造函數,實例,原型對象之間的關係和原型鏈(4)

看圖
1.
在這裏插入圖片描述

2. 每個構造函數都有一個原型對象,通過構造函數prototype指向我們的原型對象.
3. 在原型對象裏面有一個constructor屬性,通過這個屬性指回了構造函數
4. 我們可以通構造函數new一個zs對象實例出來
5. 在實例裏面有一個__proto__,它指向的是我們構函數的原型對象.
6. 在實例裏面有__proto__,而__proto__裏面也有一個constructor屬性,constructor屬性指回的是我們的構造函數.所以我們的實例也可以指回我們的構造函數

原型鏈

在這裏插入圖片描述
可以看到,
對象實例的__proto__指向構造函數的原型對象prototype,
構造函數的原型對象prototype裏面的__proto__指向Object的原型對象prototype,
而Object的原型對象prototype指向null,因爲他是最頂層了

所以我們稱這條鏈爲原型鏈
說白了就是提供一條查找的線路,
首先看我們實例裏面有沒有這個成員,沒有的話就一層一層的往上找,所以就有了我們的成員查找機制

JavaScript的成員查找機制

1. 訪問一個對象的屬性(包括方法)的時候,先查找對象自身有沒有該屬性.
2. 如果沒有就查找它的原型(__proto__指向的)
3. 如果還是沒有,就查找原型對象的原型(Object的原型對象)
4. 直到最頂層(null)

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