为了账号安全,请及时绑定邮箱和手机立即绑定

如下所示,请问要将函数原型对象的constructor指向该函数有作用吗?

如下所示,请问要将函数原型对象的constructor指向该函数有作用吗?

慕运维8079593 2022-01-06 11:07:39
function student(){}student.prototype = {};student.prototype.constructor = student?有必要存在吗
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

我们来看一下javascript中的原型:javascript原型是一个对象。javascript中所有的构造函数都有一个属性,叫prototype,这个属性存放的就是原型对象;访问这个属性通过:函数名.prototype,从而可以访问到这个原型对象,也可以为这个原型赋值。在原型对象中有一个属性叫constructor,这个constructor指向函数本身。我偿可以访问到原型中的这个属性:函数名.prototype.constructor;我们可以为原型对象添加属性并赋值:函数名.prototype.属性名=值;为函数原型添加的属性,都会成为构造函数的属性,从而成为对象的属性。既然对象具有了原型内的属性,说明对象中的这些属性是从原型中继承来的。所以javascript是基于原型的继承的。当读取对象的属性时,会先查找对象的常规属性,如果常规属性中没有,则去查找原型中的属性。当给对象的属性赋值时,javascript不会使用原型对象。即:如果对象的常规属性中有此属性,则直接赋值vkjsfq此属性而在原型对象中存在此属性,那么,对象会在自己的常规属性中添加一个与这个原型对象中同名的属性。而不去修改原型对象属性的值。注意:这时再读取这个属性时,读取的是常规属性中的值,原型对象中的这个属性值已经读取不到了,已经被对象中的常规属性给覆盖了。

查看完整回答
反对 回复 2022-01-09
?
当年话下

TA贡献1890条经验 获得超9个赞

不指向该函数的话 new student()实例的constructor无法判断其的指向,失去了其的作用;
修改constructor属性后也有点问题。变成可枚举对象了,可以通过object.defineProperty设置

查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信