文章極短,沒有圖!
1.概念
__proto__
- 物件特有
- 指向上層(建立自己的那個建構函式)的pototype
- 因此物件可以從 prototype 中繼承屬性和方法
prototype
- 函式特有
- 用於儲存要共享的屬性和方法
constructor
- 函式特有,定義在prototype裡面
- 通過new建立例項時,該例項便繼承了prototype的屬性和方法
2. 既是函式也是物件
Object:既是物件,也是建構函式
-
作為物件:
Object.__proto__
=Function.prototype
-
作為函式:
Object.prototype
是原型鏈的頂端,Object.prototype.__proto__
= null
Function:既是物件,也是建構函式
-
作為物件:
Function.__proto__
=Function.prototype
-
作為函式:
Function.prototype
用於共享,而Function.prototype__proto__
繼承自Object.prototype
Array(Date...):既是物件,也是建構函式
- 作為物件:
Array.__proto__
=Function.prototype
- 作為函式:
Array.prototype
用於共享,Array.prototype.__proto__
繼承自Object.prototype
普通物件Person:既是物件,也是建構函式
- 作為物件:
Person.__proto__
=Function.prototype
- 作為函式:
Person.prototype
用於共享,Person.prototype.__proto__
繼承自Object.prototype
總結
-
原型鏈頂端是
Object.prototype
-
建構函式建立的物件(Object、Function、Array、普通物件等)都是Function的例項,它們的
__proto__
均指向Function.prototype
-
除了Object,所有物件(或叫建構函式)的
prototype
,均繼承自Object.prototype
希望這篇簡短的文章可以幫助你徹底理解原型鏈,如果覺得文章有用,點贊鼓勵一下吧~