原型和原型链(对象的构建)

11 篇文章 0 订阅

什么事原型

原型(prototype)是所有对象都有的一种属性,是对象生成时自带的。里面封装的时很多方法,也都是在对象生成时自带的。
在这里插入图片描述

原型有什么用

在讲原型有什么用之前,首先要知道,代码中所有的对象都是由谁构建的,因为原型在对象中存在着继承机制

对象都是由谁构建的

通常构建一个对象的方法就是var一个变量名,然后给他赋上值就可以了。就比如:

var a = {}

不知道读者有没有听过一种说法:“对象都是new出来的”。
那么这样一看,这句话又不对。因为我上面没有用new这个关键字啊

其实这样是一种简便的写法,其真正的写法应是这样的:

var a = new Object()

Object就是内置构造函数。这样一看,“对象都是new出来的”这句话就对了。哈哈哈哈哈哈

好,现在问题又来了,Object既然是一个构造函数,那么他就一定是个对象(函数都是对象)。那么Object也应该是new出来的,那么他是谁new出来的呢?

这里就准根溯源到最初了,有一个祖宗级别的函数,叫 Function,可以说,所有的函数都是他的直系血脉。

好,那你是不是又要问,这个老祖宗又是谁new出来的。

没有了,这就是最初的

Function这个函数是Js引擎生成的,再没有爸爸爷爷之类的关系了。
这里就要放一张经典的图
在这里插入图片描述
我知道你看不懂

没关系,我也不是太懂,但是比你懂一些

接下来讲这个原型的继承

原型的意义

我们从上面得知,原型是在函数生成时自带的一种属性,里面封装着很多方法。其实这些方法,都是由创建他们的函数继承给他们的,也就是我在new一个对象时,构造函数把原型里的方法也给了他,这样就能让对象继承很多方法,不至于再一一创建,方便了很多。

那么我能不能通过new出来的对象的原型,往回找到我的构造函数的原型呢?这样我在不知道函数是谁创建的时,我就能通过原型找到了呀。

可以的。

对象再被构建时,不仅自带了prototype这一种属性,同时还生成了另一种属性叫:

隐式原型(__proto__)

隐式原型只有一个作用,就是找到构建我函数的构造函数的原型

知道这点后再看上面的图,是不是就能理清他们之间的联系了

为什么Function的原型和隐式原型都是一个东西?
为什么Function的隐式原型是Object的原型?关系不对啊?

别问,问就是不知道。人家原理就是这样,理解不了就强记呗,没办法

原型链

由所有原型连接起来的一个链条,就叫原型链

就这么简单

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值