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

JavaScript中如何从子类实例获取父类对象?

从子类实例中提取父类属性对象的方法

针对你的场景,有几种实用的方法可以从b1中提取出{a:1, b:2}:

方法一:手动提取已知属性

如果父类A的属性固定且明确,直接构造目标对象即可:

const aData = {
  a: b1.a,
  b: b1.b
};
// 结果:{a:1, b:2}

方法二:基于父类实例动态提取

如果父类A的属性可能变动,这种方法更灵活,无需硬编码属性名:

// 创建父类A的空实例
const aProto = new A();
// 遍历A实例的所有自有属性,从b1中取值
const aData = Object.fromEntries(
  Object.keys(aProto).map(key => [key, b1[key]])
);
// 结果:{a:1, b:2}

方法三:在父类中添加转换方法

在A类里定义专门方法返回自身属性对象,子类继承后直接调用:

class A {
  constructor() {
    this.a = 1;
    this.b = 2;
  }
  // 添加转换方法
  toAObject() {
    return {
      a: this.a,
      b: this.b
    };
  }
}

class B extends A {
  constructor() {
    super();
    this.c = 3;
  }
}

// 使用时直接调用方法
const aData = b1.toAObject();
// 结果:{a:1, b:2}

若A的属性较多,可优化toAObject方法避免逐个编写属性:

toAObject() {
  const aProto = new A();
  return Object.fromEntries(
    Object.keys(aProto).map(key => [key, this[key]])
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:10:37