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

使用extends在同一对象内继承类报错:A未定义,如何解决?

问题分析与解决方法

你遇到的"A is not defined"错误,原因是对象字面量在创建过程中,变量A还未完成赋值——当你定义Bar类并尝试继承A.Foo时,A还只是一个正在被构建的对象,还没有被赋值到变量里,自然无法通过A.Foo访问到Foo类。

这种继承思路是可行的,只需调整代码结构避开变量未初始化的问题,以下是两种有效解决方案:

方案一:先独立定义基类,再构建对象

先把Foo类单独定义,再加入对象中,这样Bar可以直接引用已存在的Foo类:

class Foo {}

const A = {
  Foo,
  Bar: class extends Foo {
    constructor() {
      super(); // 继承类的构造函数必须调用super(),否则会报错
      console.log("test");
    }
  }
};

const a = new A.Bar();

方案二:分步为对象添加属性

先创建空对象A,再依次添加Foo和Bar属性,此时A已经存在,Bar可以正常引用A.Foo:

const A = {};

A.Foo = class {};

A.Bar = class extends A.Foo {
  constructor() {
    super();
    console.log("test");
  }
};

const a = new A.Bar();

注意:继承类的构造函数必须调用super()来初始化父类的上下文,否则运行时会抛出错误,你的原代码中缺少这一步,需要补上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 04:13:10