前端开发那些事

原型链以及方法执行顺序

2019-10-17  本文已影响0人  Nice先生的狂想曲

前言

快节奏的世界,大家都想要快,因此我把构造函数与原型链分文章说明。
想具体了解构造函数与原型、原型链之间的关系可以结合另一篇文章
构造函数和原型及两者作用

本文章说明原型链中的关系


构造函数、函数原型与实例对象原型的关系——图解

构造函数、原型对象与对象原型的关系

定论

  1. 任何对象必有__ proto __属性.(包括简单类型对象,var i=1;)
    特例:(Object.prototype属性对象)和(Object对象.proto属性对象)没有proto属性.
  2. 任何函数必有prototype原型对象

此时,由第一个定论,函数的原型对象一定存在 __ proto __属性,那么在原型链里面,存在一个Object函数,而函数的原型对象的 __ proto __指向的是Object函数对象的prototype

Person.prototype.__ proto __===Object.prototype

由因为Object.prototype是Object的原型对象,因此它的construtor指向Object本身,即

Object.prototype.construtor===Object

而同时Object的原型对象又符合第一个结论的特例,即Object.prototype.__ proto __不存在proto属性,指向的是空(null

下图为原型链: 原型链关系图
执行顺序

就近原则:在查找方法的时候,如果执行实例对象方法,则先查找this的方法;后通过原型链中 __ proto __的线路逐步查找,直到找到为止。

最后加上Object函数与Function的关系,如下图所示 完整原型链关系图
上一篇 下一篇

猜你喜欢

热点阅读