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

ES6类中调用super()出现SyntaxError: 'super' keyword unexpected here错误求助

问题解答

错误原因

你在子类Bar的go方法里直接写super()属于语法错误,核心规则是:

  • super()仅能在子类的constructor构造函数内部调用,作用是触发父类的构造逻辑,完成父类部分的初始化。
  • 在普通实例方法(比如这里的go)中,要调用父类的同名方法,必须写成super.方法名()的形式。

修复后的代码

class Foo {
    go() {
        console.log('Foo.go');
    }
}

class Bar extends Foo {
    go() {
        console.log('Bar.go');
        super.go(); // 正确调用父类的go方法
    }
}

// 测试执行
const bar = new Bar();
bar.go();
// 输出顺序:
// Bar.go
// Foo.go

补充说明

如果子类需要自定义构造函数,必须在构造函数内先调用super(),之后才能使用this关键字,否则会抛出错误:

class Bar extends Foo {
    constructor() {
        super(); // 必须先执行这一步
        this.customProp = '自定义属性';
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:27:19