【JavaScript】原型链中的prototype、__proto__与constructor三者怎么链接

概念明确

prototype

  JavaScript规定,每一个构造函数都有一个prototype属性,指向一个对象,任何函数在创建的时候,其实会默认同时创建该函数的prototype对象

例如定义一个Star函数:
在这里插入图片描述

  其作用就是包含可以由特定类型的所有实例共享的属性和方法,也就是让该函数所实例化的对象们都可以找到公用的属性和方法

proto

  对象上都会有一个属性__proto__,该属性指向构造函数的 prototype 原型对象

例如使用Star构造函数创建一个实例:
在这里插入图片描述

  之所以我们对象可以使用构造函数prototype 原型对象的属性和方法,就是因为对象有 _ proto__ 原型的存在

  __proto__对象原型的意义就在于为对象的查找机制提供一个方向,或者说一条路线,实例成员,可以通过_proto_对象原型属性,访问构造函数原型 prototype对象中的方法

查找规则:

  1. 首先先看实例对象身上是否有指定 方法,如果有就执行这个对象上的指定方法
  2. 如果没用指定方法,因为有_proto的存在,就会去构造函数原型对象prototype身上去查找指定方法

constructor

constructor我们称为构造函数,因为它指向构造函数本身

对象原型( _ proto__)和构造函数原型对象(prototype)里面都有一个属性constructor 属性
在这里插入图片描述
在这里插入图片描述

原型链

从上面我们可以知道:

  1. 当创建一个构造函数时会自动创建一个原型对象,构造函数通过prototype属性即可访问原型对象

  2. prototype是原型对象,在创建构造函数时默认创建,原型对象拥有constructor属性可以指回构造函数本身

  3. 当构造函数通过new关键字创建实例后,对象实例可以通过__proto__属性找到构造函数的原型对象

  4. 原型对象也是对象,也拥有__proto__属性,原型对象的__proto__属性也指向构造函数的原型对象,正如java中所有的类都是Object类的子类一样,原型对象也是有这样的递进关系

因此,原型链就形成了:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

列队猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值