原型和原型链

原型:

每个函数都有Prototype属性,称为原型

因为这个属性的值是个对象,也称为原型对象

作用:

1、存放一些属性和方法

2、在JaveScript中实现继承

例子

const arr = new Array(1,2,3)
arr.sort()
arr.reverse()

通过new Array()这个构造函数创建一个数组。

创建好了之后就可以直接使用sort()、reverse()这些方法,这些方法我们并没有写,但是可以用,原因就是原型的存在。

这里的Array作为构造函数,它有自己的原型Array.prototype

在JS里面,在这个原型身上已经挂载了很多很多方法

当我们通过构造函数生成一个实例arr时,arr就可以使用prototype 原型身上这些方法了,这些方法是可以共享给所有的数组实例使用的。

深入了解实例为什么可以使用原型上这些方法:

首先要知道_proto_ 这个东西,

 _proto_:每个对象都有_proto_属性

作用:这个属性可以指向它的原型对象

const arr = new Array(1,2,3)
arr.sort()
arr.reverse()
console.log(arr._proto_ === Array.prototype)//true

arr._proto_ 和构造函数的原型是等价的,_proto_给了arr一条通往原型的路径

所以这样就可以引申出原型链这个概念:

拿对象来说,比如创建一个构造函数叫Person,new一个实例person

拿着person的_proto_就可以找到上一级的原型(Person.prototype)

同样的,只要是对象就会有_proto_,指向更上一级的对象的原型

所以说,如果在自己身上找不到想要的方法还是其他东西的话,还会沿着_proto_提供的这条路线,往上面去找,如果最上面还是没有,就会返回null

这条路线就会称为原型链

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值