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

JavaScript中继承时constructor指向的问题

JavaScript中继承时constructor指向的问题

慕丝7291255 2019-04-13 08:37:03
正在学习《JavaScript高级程序设计》,对书中p163-p164的例子有点疑问。例子如下:javascriptfunctionSuperType(){this.property=true;}SuperType.prototype.getSuperValue=function(){returnthis.property;};functionSubType(){this.subproperty=false;}//继承了SuperTypeSubType.prototype=newSuperType();varinstance=newSubType;//后面不相关的blahblah省略书中提到了:要注意instance.constructor现在指向的是SuperType,这是因为原来SubType.prototype中的constructor被重写了的缘故。对此书中的注释是:实际上,不是SubType的原型的constructor属性被重写了,而是SubType的原型指向了另一个对象——SuperType的原型,而这个原型对象的constructor属性指向的是SuperType。对此我不是很能理解,为什么SubType的原型是SuperType的实例,它的constructor就要指向SuperType呢?如果这么说,所有函数的默认原型都是Object的实例,像SuperType的constructor不就得指向Object?求大神指点迷津(抱拳)
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

因为constructor属性是可以读写的。
SubType.prototype=newSuperType();
上面这句就是newSuperType,SubType的constructor值就被重写了。
如果这么说,所有函数的默认原型都是Object的实例,像SuperType的constructor不就得指向Object?
SubType.prototype=newSuperType();这里用了new所以constructor就指向了SuperType。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 370 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号