原型链的理解

前言

本文通过从构造函数开始,从无到有的带你分析什么是原型链。

前景提示:
_proto_为隐式原型
prototype 为显示原型

1.首先构造一个函数对象Person,这里之所以叫函数对象是因为它既是一个函数也是一个对象,后面会进行讲解。
函数对象本身是具有prototype属性的,并且该属性指向它的原型,而它原型又有一个constructor属性证明该原型是由函数对象所构造出来的。在这里插入图片描述

2.然后利用该函数对象new一个实例对象person出来。
你需要知道每一个对象上都有一个_proto_属性,并且该属性就是指向它的原型所以有如下关系。在这里插入图片描述

3.原型其实也是一个对象,所以他也有自己的_proto_属性,并且指向这个原型对象的原型,在JavaScript里,原型最终是指向的Object.prototype,所以再向下查找Object.prototype的原型就是null了。
在这里插入图片描述

4.Object.prototype也是一个对象那这个对象哪来的呢?其实它是一个Object的函数对象所构造出来的
在这里插入图片描述
5.写到这里可能你就会问了:
你这些函数对象又是哪来的呢?诶别急。现在就给你讲。
前文说了函数对象有一个prototype属性,这个属性是针对函数而言的,那我们也说了他既是函数也是对象,所以它也应该有一个_proto_属性吧。所以在JavaScript中还存在一个function Function这个函数对象 它是所有函数对象的爸爸你可以这样理解。在这里插入图片描述
6.那么2个对象与前面我们所说的又有什么关系呢?
其实很简单,我们已经知道了每一个对象都有一个_proto_属性
Function又是所有函数对象的爸爸,所以每一个函数对象都指向Function.prototype。在这里插入图片描述

7.并且所有原型对象最终都指向Object.prototype所以,Function.prototype是指向Object.prototype。
在这里插入图片描述
以上就是整个原型链啦,我们通过从构造函数开始从无到有的过程分析了原型链。如果你还有什么不懂的地方就给我留言一起讨论吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值