写在开头
原型链:指各级父对象,逐级继承所形成的链式结构叫原型链。
什么是原型对象?
了解什么是原型与原型链之前我们先来了解什么是原型对象
在JavaScript的世界里万物皆对象,而对象分为两种:普通对象和函数对象。
每个普通对象都有一个属性:__proto__
而每个函数对象都有一个属性:prototype
而 __proto__ 可称为隐式原型,指向构造该对象的构造函数的原型对象。
而 prototype 可称为原型对象,该对象包含一个指针指向原构造函数。
什么是构造函数?
用来创建对象的函数叫构造函数。
特点:
- 通过new关键字加函数名和参数来进行调用
- 首字母一般大写
- 通过this构造它的属性和方法
什么是实例?
注:通过 instanceof 可检查一个对象是否是某个类(构造函数)的实例。
通过new 函数名(参数)构造出的对象叫实例对象。 构造函数实例化后的对象属于普通对象。所以具有隐式原型 __proto__
原型对象、构造函数、实例之间的关系
综上所述,构造函数属于函数对象,拥有prototype原型对象,而prototype对象又包含一个指针指向原构造函数。
实例化对象属于普通对象,拥有隐式原型对象 __proto__,所以:
同时,原型对象也属于普通对象,所以原型对象也有隐式原型对象 __proto__,这也是各级原型对象沟通的桥梁,最终形成一个原型之间的链式结构。如图:
所以,什么是原型链:指各级父对象,逐级继承所形成的链式结构叫原型链。
原型链的本质是继承。
如有不同见解,欢迎指出交流...