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

在线等!使用this之前为什么必须要调用super()?大佬们有什么好的建议?

在线等!使用this之前为什么必须要调用super()?大佬们有什么好的建议?

侃侃无极 2019-08-11 13:58:25
继承只是原形链的语法糖,看了几次babel转出来的代码,还是没有明白为什么必须先调用super?大神能从原理上解释解释吗
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

构造函数有什么作用?创建类的对象,只有对象才能调用类的属性和方法。当子类继承父类的属性和方法时,如何去调用父类的构造函数?Super()当父类构造函数是空参数时,系统会默认添加Super(),此时你可以省略。如果父类是非参数时,必须要添加Super(),初始化父类,初始化父类,子类才能调用父类属性和方法。这就是Super()的作用。
                            
查看完整回答
反对 回复 2019-08-11
?
千巷猫影

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

标准是这么规定的,子类实例的构建,基于父类实例,必须调用super之后,才可以使用this关键字,否则会报错。
进一步解释
如果es6继承仅仅是原型继承,那就不需要调用super了,但实际上不是。当你创建一个对象的时候,子对象实例会继承父对象实例属性和方法,而这个步骤的实现是super构造函数完成的,大致实现如下。
Object.getPrototypeOf(子类).call(子类this,...params)
                            
查看完整回答
反对 回复 2019-08-11
  • 2 回答
  • 0 关注
  • 279 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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