JS之原型链

原型链,顾名思义是一种类似链状结构的指向。

例:Array对象的构造函数有一个原型对象Prototype,这个Prototype对象下有一个属性construct,指向Array的公共属性和方法,Array的实例化对象arr中有个_proto_的属性,如果arr想要获得Array.Prototype中的属性和方法,就需要通过_proto_这个属性,它指向Array原型对象,即arr._proto_ ===Array.Prototype,同时,Array也是有着_proto_这个属性的指向Object.Prototype,即Array.Prototype._proto_ === Object.Prototype

自己的一些理解:

_proto_是指向上一级的原型对象,Prototype是获得构造函数的原型链对象

简单来说,_proto_类似于通过原型链找到继承中的父类

问题:Function是怎么回事?

解答:Function是一个函数,所有函数的_proto_最终指向都是Function.Prototype(函数与原型对象的联系),而Function.Prototype._proto_是指向Object.Prototype最终指向null

所有函数的实例化对象的构造器指向Function()

a.construct = Function()

回看之前写的原型链,发现有一些理解错误的地方,这里就不做更改了,就当看个笑话吧

简单记录一下现在对原型链的看法:

function A (){}
a = new A()
a.__proto__ = A.Prototype

在上面的代码中A是一个函数,而函数也是一种特殊的对象对象,当用new A()调用的时候,A()就相当于是A的构造函数也就是A.construct=A(),同样的A的显式原型A.Prototype=A.construct=A();a作为实例化对象,a.__proto__是它的隐式原型,隐式原型的指向是A的构造函数也就是

a.__proto__=A.construct所以a.__proto__=A.construct(A())=A.Prototype

而A也是有着隐式原型的A.Prototype._proto_ = Object.Prototype

所以a.__proto__.__proto__=Object.Prototype

这就是我眼中的原型链

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值