一文读懂原型与原型链

409 阅读2分钟

写在开头

原型链:指各级父对象,逐级继承所形成的链式结构叫原型链。

什么是原型对象?

了解什么是原型与原型链之前我们先来了解什么是原型对象

在JavaScript的世界里万物皆对象,而对象分为两种:普通对象函数对象
每个普通对象都有一个属性:__proto__
而每个函数对象都有一个属性:prototype
__proto__ 可称为隐式原型,指向构造该对象的构造函数的原型对象。
prototype 可称为原型对象,该对象包含一个指针指向原构造函数。

什么是构造函数?

用来创建对象的函数叫构造函数。

特点:

  1. 通过new关键字加函数名和参数来进行调用
  2. 首字母一般大写
  3. 通过this构造它的属性和方法

什么是实例?

注:通过 instanceof 可检查一个对象是否是某个类(构造函数)的实例。

通过new 函数名(参数)构造出的对象叫实例对象。 构造函数实例化后的对象属于普通对象。所以具有隐式原型 __proto__

原型对象、构造函数、实例之间的关系

综上所述,构造函数属于函数对象,拥有prototype原型对象,而prototype对象又包含一个指针指向原构造函数。

微信截图_20220322200559.png 实例化对象属于普通对象,拥有隐式原型对象 __proto__,所以:

微信截图_20220322201124.png

同时,原型对象也属于普通对象,所以原型对象也有隐式原型对象 __proto__,这也是各级原型对象沟通的桥梁,最终形成一个原型之间的链式结构。如图:

微信截图_20220322201617.png 所以,什么是原型链:指各级父对象,逐级继承所形成的链式结构叫原型链。
原型链的本质是继承

如有不同见解,欢迎指出交流...