JS中的原型鏈

在了解原型鏈之前,我們首先理解幾個概念:

JavaScript內(nèi)置對象

所謂的內(nèi)置對象 指的是:JavaScript本身就自己有的對象 可以直接拿來就用。例如Array String 等等。JavaScript一共有12內(nèi)置對象

  • 函數(shù)構造器對象(10個):它們都有 __proto__prototype 屬性,typeof "function"

String、NumberBoolean、ArrayFunction、Date、RegExp、ErrorObject、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ù))

為了便于理解我畫了一張圖:


prototype.jpg
實例圖解
Function.jpg

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

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容