温故而知新篇十

什么是原型

原型是一种对象属性,允许对象在彼此之间继承通用功能。 所有JavaScript对象都可以从Object.prototype继承属性和方法。 甚至原型本身也具有继承更多属性的能力,即另一个原型,也称为prototype chaining

可以让所有的对象实例共享它所包含的属性和方法。

原型对象、实例、构造函数的关系

每个构造函数都有一个原型对象,针对每个函数,都有一个prototype,属性该属性是个对象
每个原型对象都有一个指向构造函数的指针,针对每个对象,都有一个_proto_指针,指向构造函数的原型对象
每个实例都由一个指向原型对象的指针

在这里插入图片描述

proto和prototype

proto 通常称为隐式原型,prototype 通常称为显式原型,可以说一个对象的隐式原型指向了该对象的构造函数的显式原型。在显式原型上定义的属性方法,通过隐式原型传递给了构造函数的实例。这样一来实例就能很容易的访问到构造函数原型上的方法和属性了。

属性__proto__是一个对象,它有两个属性,constructor和__proto__;

原型对象prototype有一个默认的constructor属性,用于记录实例是由哪个构造函数创建;

构造函数

构造函数上可以附带 实例成员 和 静态成员

  • 实例成员: 实例成员就是在构造函数内部,通过this添加的成员。实例成员只能通过实例化的对象来访问。
  • 静态成员: 在构造函数本身上添加的成员,只能通过构造函数来访问。
    在这里插入图片描述

构造函数实现方法共享

  • 定义构造函数的规则: 公共属性定义到构造函数里面,公共方法放到原型对象上
    在这里插入图片描述
    在这里插入图片描述

Object和Function

Object、Function都是js内置的函数

Object.prototype是一切对象的根源,根源之上在没有其他。

Function的prototype是一个内置函数,一切函数都派生自这个内置函数。该内置函数对象的prototype指向根源对象。

函数既是函数又是对象,含有__proto__和prototype属性。__proto__指向Function.prototype,Function.prototype的__proto__属性又指向了 Object.prototype;prototype最终指向Object.prototype

原型链

prototype机制就是存在于对象中的一个内部链接,它会引用其他对象。

如果在当前对象没有找到需要的属性或者方法引用,引擎就会沿着prototype关联的对象继续查找,以此类推。这一系列对象的链接被称为原型链。

在这里插入图片描述

原型链的终点

Function.prototype.proto === Object.prototype

Object.prototype是原型链的最顶端,它的__proto__仍然存在,值为null

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

禅思院

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

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

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

打赏作者

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

抵扣说明:

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

余额充值