_ _proto__、prototype 和 constructor之间的关系

_ proto_、prototype 和 constructor之间的关系
在这里插入图片描述
两个实例是对象,构造函数是函数,每个对象都有_ proto _ 属性,即[[prototype]]属性,每一个函数都有prototype属性,这个属性指向一个对象,即每一个实例的原型对象。
1._ proto _ 属性proto属性
_ proto _ 属性和constructor属性都是对象所独有的,prototype属性是函数独有的,函数在js当中又属于对象,所有函数同时拥有这三个属性。
上图中,f1是一个实例对象,它的原型对象是构造函数的prototype属性指向的那个对象,而这个原型对象又指向他自己的原型对象,_ proto _ 属性的作用是从一个对象指向另一个对象,旨在寻找对象属性时,如果在本身无法找到该属性,就一级一级的向上查找,就这样构成了原型链。
其实,我们平时使用的字符串方法、对象方法等都是通过_ proto _ 属性继承而来的。

2.prototype属性
在这里插入图片描述
每一个函数都有prototype属性(因为每一个函数都可以作为构造函数),从一个函数指向一个对象,它的作用是让该函数所创建的所有实例化的对象都有公用的属性和方法,在创建该函数的时候,就同时创建了该函数的prototype属性所对应的对象。

3.constructor属性

在这里插入图片描述
constructor属性是对象独有的,**它的作用是从一个对象指向一个函数,即指向该对象的构造函数。**Function对象的构造函数就是他自己,所有对象和函数都是由Function这个构造函数得来。
每个函数创建的时候,js会同时创建一个该函数的prototype属性对应的对象,这个对象就是该函数创建的每一个实例的原型对象。实例._ proto _ 属性 = 函数.prototype ,函数.prototype.constructor = 该函数本身。
只有prototype对象才有constructor属性,但是其他的对象可以通过继承找到它对应的构造函数,如f1。
在这里插入图片描述
4.总结
1)_ proto _ 属性是对象独有的,prototype属性是函数独有的,因为函数在js中也是对象,所以它拥有以上三种属性。
2)_ proto _ 属性的作用是:通过一个对象指向一个对象,进而实现js中的原型链查找。
3)prototype属性的作用是:在函数上定义一个原型对象,使得该函数创建的所有实例都具有共同的属性和方法。
4)constructor属性的含义就是指向对象的构造函数,所有对象的构造函数最终都指向Function。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值