記住這兩點,完全終結原型鏈吧

文章極短,沒有圖!函數

1.概念

__proto__

  • 對象特有
  • 指向上層(建立本身的那個構造函數)的pototype
  • 所以對象能夠從 prototype 中繼承屬性和方法

prototype

  • 函數特有
  • 用於存儲要共享的屬性和方法

constructor

  • 函數特有,定義在prototype裏面
  • 經過new建立實例時,該實例便繼承了prototype的屬性和方法

2. 既是函數也是對象

Object:既是對象,也是構造函數

  • 做爲對象:Object.__proto__ = Function.prototypeprototype

  • 做爲函數:Object.prototype是原型鏈的頂端,Object.prototype.__proto__ = nullcode

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

總結

  1. 原型鏈頂端是Object.prototype原型鏈

  2. 構造函數建立的對象(Object、Function、Array、普通對象等)都是Function的實例,它們的__proto__均指向Function.prototype原型

  3. 除了Object,全部對象(或叫構造函數)的prototype,均繼承自Object.prototypeio

但願這篇簡短的文章能夠幫助你完全理解原型鏈,若是以爲文章有用,點贊鼓勵一下吧~class

相關文章
相關標籤/搜索