在了解原型鏈之前,我們首先理解幾個概念:
JavaScript內(nèi)置對象
所謂的內(nèi)置對象 指的是:JavaScript本身就自己有的對象 可以直接拿來就用。例如Array String 等等。JavaScript一共有12內(nèi)置對象
函數(shù)構造器對象(10個):它們都有
__proto__和prototype屬性,typeof"function"
String、Number、Boolean、Array、Function、Date、RegExp、Error、Object、Event
其他對象:它們只有
__proto__屬性,typeof"object"
Math、JSON
原型(prototype),原型指針(__proto__),原型鏈,構造器指針(constructor)
原型
(prototype)- 所有函數(shù)都有一個
prototype(原型)屬性,屬性值是一個普通的對象
原型鏈:
在
javascript中,每個函數(shù)都會初始化一個屬性,原型(prototype),當我們需要訪問這個函數(shù)的某個屬性時,就會去到prototype中尋找這個屬性,若沒有找到這個屬性,prototype中也存在自己的prototype,于是乎就這樣一直往上查找。
當訪問一個對象的某個屬性時,會先在這個對象本身屬性上查找,如果沒有找到,則會去它的__proto__隱式原型上查找,即它的構造函數(shù)的prototype,如果還沒有找到就會再在構造函數(shù)的prototype的__proto__中查找,這樣一層一層向上查找就會形成一個鏈式結構,我們稱為原型鏈。
原型指針
(__proto__):指向構造該對象的構造函數(shù)的原型
(prototype)
構造器指針
(constructor):
prototype中有一個constructor屬性,這個屬性的值就是指向原型的構造器(構造函數(shù))
為了便于理解我畫了一張圖:

實例圖解

https://www.cnblogs.com/syomm/p/5942165.html
https://www.cnblogs.com/dominik/articles/10301449.html
https://www.cnblogs.com/douglasryan/p/10461866.html
https://www.cnblogs.com/yan-yubo/p/Javascript-built_in_objects.html