You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中super函数为何看起来调用了子类自身的构造函数?

JavaScript super关键字示例疑问解答
  • 首先明确:示例中的super调用的是父类Rectangle的构造函数,而非子类Square的构造函数,你此前对super基础作用的认知是正确的,它的作用就是调用父类构造完成继承初始化。
  • 关于参数的疑问:你提到的「调用super时需要传入父类要求的height和width参数」的规则完全正确,这个示例恰恰就是遵守这个规则实现的。

Square作为正方形的类,长宽值完全相等,所以它的构造函数只需要接收一个length参数作为边长即可。调用super(length, length)的时候,就是把第一个length作为父类构造要求的height入参、第二个length作为父类要求的width入参传入,完全匹配父类构造的参数要求。

你给出的代码运行后会输出以下结果:

{"name":"Square","height":4,"width":4}
4

这个结果也能验证逻辑正确性:父类构造成功给实例赋值了height和width属性,子类也成功覆盖了name属性为Square。

这种写法是类继承的典型使用场景:子类复用父类已经实现的属性赋值逻辑,只需要针对自身的特性(正方形长宽相等)做入参适配即可,不需要重复编写height、width的赋值代码,减少逻辑冗余。

内容的提问来源于stack exchange,提问作者Toby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:09:05